FIR: add ability to render declaration phase in FirRenderer

This commit is contained in:
Ilya Kirillov
2020-10-08 12:17:59 +03:00
parent bbf450703f
commit f4199a0729
2 changed files with 25 additions and 4 deletions
@@ -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) {
@@ -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("_", " ")