[FIR] Refactor: extract class reference expression rendering out of

...`FirRenderer`.

^KT-62559
This commit is contained in:
Roman Efremov
2023-10-20 21:12:45 +02:00
committed by Space Team
parent fa897e4148
commit c609de5195
4 changed files with 34 additions and 3 deletions
@@ -0,0 +1,14 @@
/*
* Copyright 2010-2023 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.expressions.FirGetClassCall
abstract class FirGetClassCallRenderer {
internal lateinit var components: FirRendererComponents
internal abstract fun render(getClassCall: FirGetClassCall)
}
@@ -0,0 +1,16 @@
/*
* Copyright 2010-2023 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.expressions.FirGetClassCall
internal class FirGetClassCallRendererForDebugging : FirGetClassCallRenderer() {
override fun render(getClassCall: FirGetClassCall) {
components.annotationRenderer?.render(getClassCall)
components.printer.print("<getClass>")
components.visitor.visitCall(getClassCall)
}
}
@@ -47,6 +47,7 @@ class FirRenderer(
override val resolvedNamedReferenceRenderer: FirResolvedNamedReferenceRenderer = FirResolvedNamedReferenceRendererWithLabel(),
override val resolvedQualifierRenderer: FirResolvedQualifierRenderer = FirResolvedQualifierRendererWithLabel(),
private val lineBreakAfterContextReceivers: Boolean = true,
override val getClassCallRenderer: FirGetClassCallRenderer = FirGetClassCallRendererForDebugging(),
) : FirRendererComponents {
override val visitor = Visitor()
@@ -101,6 +102,7 @@ class FirRenderer(
fileAnnotationsContainerRenderer?.components = this
resolvedNamedReferenceRenderer.components = this
resolvedQualifierRenderer.components = this
getClassCallRenderer.components = this
}
fun renderElementAsString(element: FirElement, trim: Boolean = false): String {
@@ -1114,9 +1116,7 @@ class FirRenderer(
}
override fun visitGetClassCall(getClassCall: FirGetClassCall) {
annotationRenderer?.render(getClassCall)
print("<getClass>")
visitCall(getClassCall)
getClassCallRenderer.render(getClassCall)
}
override fun visitClassReferenceExpression(classReferenceExpression: FirClassReferenceExpression) {
@@ -28,4 +28,5 @@ internal interface FirRendererComponents {
val fileAnnotationsContainerRenderer: FirFileAnnotationsContainerRenderer?
val resolvedNamedReferenceRenderer: FirResolvedNamedReferenceRenderer
val resolvedQualifierRenderer: FirResolvedQualifierRenderer
val getClassCallRenderer: FirGetClassCallRenderer
}