From f4199a07299048d051d73a3f1fb34f7e64834d01 Mon Sep 17 00:00:00 2001 From: Ilya Kirillov Date: Thu, 8 Oct 2020 12:17:59 +0300 Subject: [PATCH] FIR: add ability to render declaration phase in FirRenderer --- .../fir/resolve/dfa/cfg/CFGNodeRenderer.kt | 2 +- .../org/jetbrains/kotlin/fir/FirRenderer.kt | 27 ++++++++++++++++--- 2 files changed, 25 insertions(+), 4 deletions(-) diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/dfa/cfg/CFGNodeRenderer.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/dfa/cfg/CFGNodeRenderer.kt index 615ab88bd18..374545d5a75 100644 --- a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/dfa/cfg/CFGNodeRenderer.kt +++ b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/dfa/cfg/CFGNodeRenderer.kt @@ -122,7 +122,7 @@ fun CFGNode<*>.render(): String = } private object CfgRenderMode : FirRenderer.RenderMode( - renderLambdaBodies = false, renderCallArguments = false, renderCallableFqNames = false + renderLambdaBodies = false, renderCallArguments = false, renderCallableFqNames = false, renderDeclatationResovlePhase = false ) private fun FirFunction<*>.name(): String = when (this) { diff --git a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/FirRenderer.kt b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/FirRenderer.kt index 8fc9cee586f..102d96eb2a6 100644 --- a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/FirRenderer.kt +++ b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/FirRenderer.kt @@ -50,11 +50,29 @@ class FirRenderer(builder: StringBuilder, private val mode: RenderMode = RenderM abstract class RenderMode( val renderLambdaBodies: Boolean, val renderCallArguments: Boolean, - val renderCallableFqNames: Boolean + val renderCallableFqNames: Boolean, + val renderDeclatationResovlePhase: Boolean ) { - object Normal : RenderMode(renderLambdaBodies = true, renderCallArguments = true, renderCallableFqNames = false) + object Normal : RenderMode( + renderLambdaBodies = true, + renderCallArguments = true, + renderCallableFqNames = false, + renderDeclatationResovlePhase = false + ) - object WithFqNames: RenderMode(renderLambdaBodies = true, renderCallArguments = true, renderCallableFqNames = true) + object WithFqNames : RenderMode( + renderLambdaBodies = true, + renderCallArguments = true, + renderCallableFqNames = true, + renderDeclatationResovlePhase = false + ) + + object WithResolvePhases : RenderMode( + renderLambdaBodies = true, + renderCallArguments = true, + renderCallableFqNames = false, + renderDeclatationResovlePhase = true + ) } private val printer = Printer(builder) @@ -322,6 +340,9 @@ class FirRenderer(builder: StringBuilder, private val mode: RenderMode = RenderM } override fun visitDeclaration(declaration: FirDeclaration) { + if (mode.renderDeclatationResovlePhase) { + print("[${declaration.resolvePhase}] ") + } print( when (declaration) { is FirRegularClass -> declaration.classKind.name.toLowerCase().replace("_", " ")