Extract separate FirResolvePhaseRenderer

This commit is contained in:
Mikhail Glukhikh
2022-07-08 15:37:09 +02:00
committed by Space
parent 42b3adf33a
commit f9fdb5d3bc
10 changed files with 32 additions and 32 deletions
@@ -11,17 +11,15 @@ open class FirDeclarationRenderer {
internal lateinit var components: FirRendererComponents
protected val printer get() = components.printer
private val resolvePhaseRenderer get() = components.resolvePhaseRenderer
fun render(declaration: FirDeclaration) {
resolvePhaseRenderer?.render(declaration)
with(declaration) {
renderDeclarationResolvePhase()
renderDeclarationAttributes()
}
}
protected open fun FirDeclaration.renderDeclarationResolvePhase() {
}
protected open fun FirDeclaration.renderDeclarationAttributes() {
}
}
@@ -1,14 +0,0 @@
/*
* Copyright 2010-2022 JetBrains s.r.o. and Kotlin Programming Language contributors.
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
*/
package org.jetbrains.kotlin.fir.renderer
import org.jetbrains.kotlin.fir.declarations.FirDeclaration
class FirDeclarationRendererWithResolvePhase : FirDeclarationRenderer() {
override fun FirDeclaration.renderDeclarationResolvePhase() {
printer.print("[${resolvePhase}] ")
}
}
@@ -41,6 +41,7 @@ class FirRenderer private constructor(
private val modifierRenderer: FirModifierRenderer,
private val packageDirectiveRenderer: FirPackageDirectiveRenderer?,
private val propertyAccessorRenderer: FirPropertyAccessorRenderer?,
private val resolvePhaseRenderer: FirResolvePhaseRenderer?,
private val typeRenderer: ConeTypeRenderer,
private val valueParameterRenderer: FirValueParameterRenderer,
) : FirPrinter(builder) {
@@ -58,6 +59,7 @@ class FirRenderer private constructor(
components.modifierRenderer = modifierRenderer
components.packageDirectiveRenderer = packageDirectiveRenderer
components.propertyAccessorRenderer = propertyAccessorRenderer
components.resolvePhaseRenderer = resolvePhaseRenderer
components.typeRenderer = typeRenderer
components.valueParameterRenderer = valueParameterRenderer
@Suppress("LeakingThis")
@@ -72,6 +74,7 @@ class FirRenderer private constructor(
modifierRenderer.components = components
packageDirectiveRenderer?.components = components
propertyAccessorRenderer?.components = components
resolvePhaseRenderer?.components = components
typeRenderer.builder = builder
typeRenderer.idRenderer = idRenderer
valueParameterRenderer.components = components
@@ -93,6 +96,7 @@ class FirRenderer private constructor(
FirAllModifierRenderer(),
packageDirectiveRenderer = null,
FirPropertyAccessorRenderer(),
resolvePhaseRenderer = null,
ConeTypeRendererForDebugging(),
FirValueParameterRenderer(),
)
@@ -110,13 +114,15 @@ class FirRenderer private constructor(
modifierRenderer: FirModifierRenderer = this.modifierRenderer,
packageDirectiveRenderer: FirPackageDirectiveRenderer? = this.packageDirectiveRenderer,
propertyAccessorRenderer: FirPropertyAccessorRenderer? = this.propertyAccessorRenderer,
resolvePhaseRenderer: FirResolvePhaseRenderer? = this.resolvePhaseRenderer,
typeRenderer: ConeTypeRenderer = this.typeRenderer,
valueParameterRenderer: FirValueParameterRenderer = this.valueParameterRenderer,
): FirRenderer = FirRenderer(
builder, FirComponentsImpl(),
annotationRenderer, bodyRenderer, callArgumentsRenderer, classMemberRenderer,
contractRenderer, declarationRenderer, idRenderer, modifierRenderer,
packageDirectiveRenderer, propertyAccessorRenderer, typeRenderer, valueParameterRenderer
packageDirectiveRenderer, propertyAccessorRenderer,
resolvePhaseRenderer, typeRenderer, valueParameterRenderer
)
fun renderElementAsString(element: FirElement): String {
@@ -150,6 +156,8 @@ class FirRenderer private constructor(
override var propertyAccessorRenderer: FirPropertyAccessorRenderer? = null
override var resolvePhaseRenderer: FirResolvePhaseRenderer? = null
override lateinit var callArgumentsRenderer: FirCallArgumentsRenderer
override lateinit var classMemberRenderer: FirClassMemberRenderer
@@ -20,6 +20,7 @@ internal interface FirRendererComponents {
val modifierRenderer: FirModifierRenderer
val packageDirectiveRenderer: FirPackageDirectiveRenderer?
val propertyAccessorRenderer: FirPropertyAccessorRenderer?
val resolvePhaseRenderer: FirResolvePhaseRenderer?
val typeRenderer: ConeTypeRenderer
val valueParameterRenderer: FirValueParameterRenderer
}
@@ -7,8 +7,11 @@ package org.jetbrains.kotlin.fir.renderer
import org.jetbrains.kotlin.fir.declarations.FirDeclaration
class FirDeclarationRendererWithAttributesAndResolvePhase : FirDeclarationRendererWithAttributes() {
override fun FirDeclaration.renderDeclarationResolvePhase() {
printer.print("[${resolvePhase}] ")
class FirResolvePhaseRenderer {
internal lateinit var components: FirRendererComponents
private val printer get() = components.printer
fun render(declaration: FirDeclaration) {
printer.print("[${declaration.resolvePhase}] ")
}
}