From abf41f87a11041f93c1e90d4c45e1bae8eed5096 Mon Sep 17 00:00:00 2001 From: Dmitriy Novozhilov Date: Wed, 6 Nov 2019 18:01:51 +0300 Subject: [PATCH] [FIR] Fix rendering of local variables in Visualizer --- .../compiler/visualizer/FirVisualizer.kt | 46 ++++++++++++------- 1 file changed, 29 insertions(+), 17 deletions(-) diff --git a/compiler/visualizer/render-fir/src/org/jetbrains/kotlin/compiler/visualizer/FirVisualizer.kt b/compiler/visualizer/render-fir/src/org/jetbrains/kotlin/compiler/visualizer/FirVisualizer.kt index fcf96934829..6af0d787795 100644 --- a/compiler/visualizer/render-fir/src/org/jetbrains/kotlin/compiler/visualizer/FirVisualizer.kt +++ b/compiler/visualizer/render-fir/src/org/jetbrains/kotlin/compiler/visualizer/FirVisualizer.kt @@ -334,6 +334,10 @@ class FirVisualizer(private val firFile: FirFile) : BaseRenderer() { } override fun visitProperty(property: FirProperty, data: StringBuilder) { + if (property.isLocal) { + visitVariable(property, data) + return + } data.append(property.returnTypeRef.render()) } @@ -505,6 +509,16 @@ class FirVisualizer(private val firFile: FirFile) : BaseRenderer() { id = id.substring(1) } + fun renderVariable(variable: FirVariable<*>) { + if (variable !is FirValueParameter) { + if (variable.isVar) data.append("var ") else if (variable.isVal) data.append("val ") + } + data.append(id) + + data.append(": ") + variable.returnTypeRef.accept(this, data) + } + when (symbol) { is FirNamedFunctionSymbol -> { val callableName = symbol.callableId.callableName @@ -520,28 +534,26 @@ class FirVisualizer(private val firFile: FirFile) : BaseRenderer() { } } is FirPropertySymbol -> { - data.append(if (symbol.fir.isVar) "var" else "val").append(" ") - renderListInTriangles(symbol.fir.typeParameters, data, withSpace = true) + if (symbol.fir.isLocal) { + renderVariable(symbol.fir) + } else { + data.append(if (symbol.fir.isVar) "var" else "val").append(" ") + renderListInTriangles(symbol.fir.typeParameters, data, withSpace = true) - val receiver = symbol.fir.receiverTypeRef?.render() - if (receiver != null) { - data.append(receiver).append(".") - } else if (id != symbol.callableId.callableName.asString()) { - data.append("($id)").append(".") + val receiver = symbol.fir.receiverTypeRef?.render() + if (receiver != null) { + data.append(receiver).append(".") + } else if (id != symbol.callableId.callableName.asString()) { + data.append("($id)").append(".") + } + + data.append(symbol.callableId.callableName).append(": ") + symbol.fir.returnTypeRef.accept(this, data) } - data.append(symbol.callableId.callableName).append(": ") - symbol.fir.returnTypeRef.accept(this, data) } is FirVariableSymbol<*> -> { - if (symbol.fir !is FirValueParameter) { - if (symbol.fir.isVar) data.append("var ") else if (symbol.fir.isVal) data.append("val ") - } - data.append(id) - - data.append(": ") - symbol.fir.returnTypeRef.accept(this, data) - } + renderVariable(symbol.fir) } is FirConstructorSymbol -> { data.append("constructor ") val packageName = symbol.callableId.className