[VISUALIZER] Allow to render arrayOf call for fir
This commit is contained in:
committed by
TeamCityServer
parent
74c19807b8
commit
6d08ef2f41
+12
@@ -254,6 +254,7 @@ class FirVisualizer(private val firFile: FirFile) : BaseRenderer() {
|
|||||||
|
|
||||||
override fun visitCallExpression(expression: KtCallExpression) {
|
override fun visitCallExpression(expression: KtCallExpression) {
|
||||||
expression.firstOfTypeWithLocalReplace<FirFunctionCall> { this.calleeReference.name.asString() }
|
expression.firstOfTypeWithLocalReplace<FirFunctionCall> { this.calleeReference.name.asString() }
|
||||||
|
?: expression.firstOfTypeWithRender<FirArrayOfCall>()
|
||||||
expression.children.filter { it.node.elementType != KtNodeTypes.REFERENCE_EXPRESSION }.forEach { psi ->
|
expression.children.filter { it.node.elementType != KtNodeTypes.REFERENCE_EXPRESSION }.forEach { psi ->
|
||||||
when (psi) {
|
when (psi) {
|
||||||
is KtLambdaArgument -> {
|
is KtLambdaArgument -> {
|
||||||
@@ -779,6 +780,17 @@ class FirVisualizer(private val firFile: FirFile) : BaseRenderer() {
|
|||||||
getClassCall.argument.accept(this, data)
|
getClassCall.argument.accept(this, data)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
override fun visitArrayOfCall(arrayOfCall: FirArrayOfCall, data: StringBuilder) {
|
||||||
|
val name = arrayOfCall.typeRef.coneType.classId?.shortClassName
|
||||||
|
val typeArguments = arrayOfCall.typeRef.coneType.typeArguments
|
||||||
|
val typeParameters = if (typeArguments.isEmpty()) "" else " <T>"
|
||||||
|
data.append("fun$typeParameters ${name?.asString()?.decapitalize()}Of")
|
||||||
|
typeArguments.firstOrNull()?.let {
|
||||||
|
data.append("<").append(it.tryToRenderConeAsFunctionType()).append(">")
|
||||||
|
}
|
||||||
|
data.append("(vararg T): $name${typeParameters.trim()}") // TODO change "T" to concrete type is array is primitive
|
||||||
|
}
|
||||||
|
|
||||||
private fun AbstractFirBasedSymbol<*>.isLocalDeclaration(): Boolean {
|
private fun AbstractFirBasedSymbol<*>.isLocalDeclaration(): Boolean {
|
||||||
return when (val fir = this.fir) {
|
return when (val fir = this.fir) {
|
||||||
is FirConstructor -> {
|
is FirConstructor -> {
|
||||||
|
|||||||
Reference in New Issue
Block a user