[FIR] Refactor: extract resolved qualifier rendering out of FirRenderer
^KT-62585
This commit is contained in:
committed by
Space Team
parent
6b1e340364
commit
f54a1b5ced
@@ -46,7 +46,8 @@ class FirRenderer(
|
|||||||
override val valueParameterRenderer: FirValueParameterRenderer? = FirValueParameterRenderer(),
|
override val valueParameterRenderer: FirValueParameterRenderer? = FirValueParameterRenderer(),
|
||||||
override val errorExpressionRenderer: FirErrorExpressionRenderer? = FirErrorExpressionOnlyErrorRenderer(),
|
override val errorExpressionRenderer: FirErrorExpressionRenderer? = FirErrorExpressionOnlyErrorRenderer(),
|
||||||
override val fileAnnotationsContainerRenderer: FirFileAnnotationsContainerRenderer? = null,
|
override val fileAnnotationsContainerRenderer: FirFileAnnotationsContainerRenderer? = null,
|
||||||
override val resolvedNamedReferenceRenderer: FirResolvedNamedReferenceRenderer = FirResolvedNamedReferenceRendererWithLabel()
|
override val resolvedNamedReferenceRenderer: FirResolvedNamedReferenceRenderer = FirResolvedNamedReferenceRendererWithLabel(),
|
||||||
|
override val resolvedQualifierRenderer: FirResolvedQualifierRenderer = FirResolvedQualifierRendererWithLabel(),
|
||||||
) : FirRendererComponents {
|
) : FirRendererComponents {
|
||||||
|
|
||||||
override val visitor = Visitor()
|
override val visitor = Visitor()
|
||||||
@@ -100,6 +101,7 @@ class FirRenderer(
|
|||||||
errorExpressionRenderer?.components = this
|
errorExpressionRenderer?.components = this
|
||||||
fileAnnotationsContainerRenderer?.components = this
|
fileAnnotationsContainerRenderer?.components = this
|
||||||
resolvedNamedReferenceRenderer.components = this
|
resolvedNamedReferenceRenderer.components = this
|
||||||
|
resolvedQualifierRenderer.components = this
|
||||||
}
|
}
|
||||||
|
|
||||||
fun renderElementAsString(element: FirElement, trim: Boolean = false): String {
|
fun renderElementAsString(element: FirElement, trim: Boolean = false): String {
|
||||||
@@ -1137,18 +1139,7 @@ class FirRenderer(
|
|||||||
}
|
}
|
||||||
|
|
||||||
override fun visitResolvedQualifier(resolvedQualifier: FirResolvedQualifier) {
|
override fun visitResolvedQualifier(resolvedQualifier: FirResolvedQualifier) {
|
||||||
annotationRenderer?.render(resolvedQualifier)
|
resolvedQualifierRenderer.render(resolvedQualifier)
|
||||||
print("Q|")
|
|
||||||
val classId = resolvedQualifier.classId
|
|
||||||
if (classId != null) {
|
|
||||||
idRenderer.renderClassId(classId)
|
|
||||||
} else {
|
|
||||||
print(resolvedQualifier.packageFqName.asString().replace(".", "/"))
|
|
||||||
}
|
|
||||||
if (resolvedQualifier.isNullableLHSForCallableReference) {
|
|
||||||
print("?")
|
|
||||||
}
|
|
||||||
print("|")
|
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun visitBinaryLogicExpression(binaryLogicExpression: FirBinaryLogicExpression) {
|
override fun visitBinaryLogicExpression(binaryLogicExpression: FirBinaryLogicExpression) {
|
||||||
|
|||||||
@@ -27,4 +27,5 @@ internal interface FirRendererComponents {
|
|||||||
val errorExpressionRenderer: FirErrorExpressionRenderer?
|
val errorExpressionRenderer: FirErrorExpressionRenderer?
|
||||||
val fileAnnotationsContainerRenderer: FirFileAnnotationsContainerRenderer?
|
val fileAnnotationsContainerRenderer: FirFileAnnotationsContainerRenderer?
|
||||||
val resolvedNamedReferenceRenderer: FirResolvedNamedReferenceRenderer
|
val resolvedNamedReferenceRenderer: FirResolvedNamedReferenceRenderer
|
||||||
|
val resolvedQualifierRenderer: FirResolvedQualifierRenderer
|
||||||
}
|
}
|
||||||
+40
@@ -0,0 +1,40 @@
|
|||||||
|
/*
|
||||||
|
* 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.FirResolvedQualifier
|
||||||
|
|
||||||
|
open class FirResolvedQualifierRenderer {
|
||||||
|
|
||||||
|
internal lateinit var components: FirRendererComponents
|
||||||
|
|
||||||
|
protected val printer: FirPrinter get() = components.printer
|
||||||
|
|
||||||
|
internal fun render(resolvedQualifier: FirResolvedQualifier) {
|
||||||
|
components.annotationRenderer?.render(resolvedQualifier)
|
||||||
|
renderResolvedQualifierWithoutAnnotations(resolvedQualifier)
|
||||||
|
}
|
||||||
|
|
||||||
|
protected open fun renderResolvedQualifierWithoutAnnotations(resolvedQualifier: FirResolvedQualifier) {
|
||||||
|
val classId = resolvedQualifier.classId
|
||||||
|
if (classId != null) {
|
||||||
|
components.idRenderer.renderClassId(classId)
|
||||||
|
} else {
|
||||||
|
printer.print(resolvedQualifier.packageFqName.asString().replace(".", "/"))
|
||||||
|
}
|
||||||
|
if (resolvedQualifier.isNullableLHSForCallableReference) {
|
||||||
|
printer.print("?")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
class FirResolvedQualifierRendererWithLabel : FirResolvedQualifierRenderer() {
|
||||||
|
override fun renderResolvedQualifierWithoutAnnotations(resolvedQualifier: FirResolvedQualifier) {
|
||||||
|
printer.print("Q|")
|
||||||
|
super.renderResolvedQualifierWithoutAnnotations(resolvedQualifier)
|
||||||
|
printer.print("|")
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user