From 9e5645777deda1f1a3b46b7ded3a87c089d595c5 Mon Sep 17 00:00:00 2001 From: Ivan Kylchik Date: Fri, 19 Feb 2021 18:05:23 +0300 Subject: [PATCH] [VISUALIZER] Add annotation text for backing field in fir --- .../kotlin/compiler/visualizer/FirVisualizer.kt | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) 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 a1fc1187ae6..8aa0575be28 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 @@ -281,7 +281,7 @@ class FirVisualizer(private val firFile: FirFile) : BaseRenderer() { override fun visitPropertyAccessor(accessor: KtPropertyAccessor) { if (accessor.isSetter) { - stack.push("", mutableListOf()) + stack.push("", mutableListOf("field")) super.visitPropertyAccessor(accessor) stack.pop() } else { @@ -431,6 +431,10 @@ class FirVisualizer(private val firFile: FirFile) : BaseRenderer() { element.acceptChildren(this, data) } + override fun visitErrorNamedReference(errorNamedReference: FirErrorNamedReference, data: StringBuilder) { + data.append(errorNamedReference.name) + } + private fun visitConstructor(calleeReference: FirReference, data: StringBuilder) { if (calleeReference !is FirResolvedNamedReference) { data.append("[ERROR: Unresolved]") @@ -459,6 +463,14 @@ class FirVisualizer(private val firFile: FirFile) : BaseRenderer() { } } + override fun visitBackingFieldReference(backingFieldReference: FirBackingFieldReference, data: StringBuilder) { + val firProperty = backingFieldReference.resolvedSymbol.fir + data.append(if (firProperty.isVar) "var " else "val ") + .append(stack.getPathByName("field")) + .append("field: ") + .append(firProperty.returnTypeRef.render()) + } + override fun visitProperty(property: FirProperty, data: StringBuilder) { if (property.isLocal) { visitVariable(property, data)