Extract separate ConeIdRenderer and get rid of FirRenderer.RenderMode

This commit is contained in:
Mikhail Glukhikh
2022-07-08 14:52:11 +02:00
committed by Space
parent e484a4a946
commit 42b3adf33a
13 changed files with 93 additions and 57 deletions
@@ -30,7 +30,6 @@ import java.util.*
class FirRenderer private constructor(
private val builder: StringBuilder,
private val mode: RenderMode,
components: FirComponentsImpl,
private val annotationRenderer: FirAnnotationRenderer?,
private val bodyRenderer: FirBodyRenderer?,
@@ -38,6 +37,7 @@ class FirRenderer private constructor(
private val classMemberRenderer: FirClassMemberRenderer,
private val contractRenderer: ConeContractRenderer?,
private val declarationRenderer: FirDeclarationRenderer,
private val idRenderer: ConeIdRenderer,
private val modifierRenderer: FirModifierRenderer,
private val packageDirectiveRenderer: FirPackageDirectiveRenderer?,
private val propertyAccessorRenderer: FirPropertyAccessorRenderer?,
@@ -54,6 +54,7 @@ class FirRenderer private constructor(
components.callArgumentsRenderer = callArgumentsRenderer
components.classMemberRenderer = classMemberRenderer
components.declarationRenderer = declarationRenderer
components.idRenderer = idRenderer
components.modifierRenderer = modifierRenderer
components.packageDirectiveRenderer = packageDirectiveRenderer
components.propertyAccessorRenderer = propertyAccessorRenderer
@@ -67,20 +68,20 @@ class FirRenderer private constructor(
classMemberRenderer.components = components
contractRenderer?.components = components
declarationRenderer.components = components
idRenderer.builder = builder
modifierRenderer.components = components
packageDirectiveRenderer?.components = components
propertyAccessorRenderer?.components = components
typeRenderer.builder = builder
typeRenderer.idRenderer = idRenderer
valueParameterRenderer.components = components
}
private constructor(
builder: StringBuilder,
mode: RenderMode,
components: FirComponentsImpl,
) : this(
builder,
mode,
components,
FirAnnotationRenderer(),
FirBodyRenderer(),
@@ -88,6 +89,7 @@ class FirRenderer private constructor(
FirClassMemberRenderer(),
ConeContractRenderer(),
FirDeclarationRenderer(),
ConeIdRendererForDebugging(),
FirAllModifierRenderer(),
packageDirectiveRenderer = null,
FirPropertyAccessorRenderer(),
@@ -95,7 +97,7 @@ class FirRenderer private constructor(
FirValueParameterRenderer(),
)
constructor(builder: StringBuilder = StringBuilder(), mode: RenderMode = RenderMode.Normal) : this(builder, mode, FirComponentsImpl())
constructor(builder: StringBuilder = StringBuilder()) : this(builder, FirComponentsImpl())
fun with(
annotationRenderer: FirAnnotationRenderer? = this.annotationRenderer,
@@ -104,16 +106,17 @@ class FirRenderer private constructor(
classMemberRenderer: FirClassMemberRenderer = this.classMemberRenderer,
contractRenderer: ConeContractRenderer? = this.contractRenderer,
declarationRenderer: FirDeclarationRenderer = this.declarationRenderer,
idRenderer: ConeIdRenderer = this.idRenderer,
modifierRenderer: FirModifierRenderer = this.modifierRenderer,
packageDirectiveRenderer: FirPackageDirectiveRenderer? = this.packageDirectiveRenderer,
propertyAccessorRenderer: FirPropertyAccessorRenderer? = this.propertyAccessorRenderer,
typeRenderer: ConeTypeRenderer = this.typeRenderer,
valueParameterRenderer: FirValueParameterRenderer = this.valueParameterRenderer,
): FirRenderer = FirRenderer(
builder, mode, FirComponentsImpl(),
builder, FirComponentsImpl(),
annotationRenderer, bodyRenderer, callArgumentsRenderer, classMemberRenderer,
contractRenderer, declarationRenderer, modifierRenderer, packageDirectiveRenderer,
propertyAccessorRenderer, typeRenderer, valueParameterRenderer
contractRenderer, declarationRenderer, idRenderer, modifierRenderer,
packageDirectiveRenderer, propertyAccessorRenderer, typeRenderer, valueParameterRenderer
)
fun renderElementAsString(element: FirElement): String {
@@ -153,6 +156,8 @@ class FirRenderer private constructor(
override lateinit var declarationRenderer: FirDeclarationRenderer
override lateinit var idRenderer: ConeIdRenderer
override lateinit var modifierRenderer: FirModifierRenderer
override lateinit var typeRenderer: ConeTypeRenderer
@@ -164,20 +169,6 @@ class FirRenderer private constructor(
override lateinit var printer: FirPrinter
}
data class RenderMode(
val renderCallableFqNames: Boolean,
) {
companion object {
val Normal = RenderMode(
renderCallableFqNames = false,
)
val WithFqNames = RenderMode(
renderCallableFqNames = true,
)
}
}
private fun List<ConeKotlinType>.renderTypesSeparated() {
for ((index, element) in this.withIndex()) {
if (index > 0) {
@@ -285,18 +276,10 @@ class FirRenderer private constructor(
}
when (callableDeclaration) {
is FirSimpleFunction -> {
if (!mode.renderCallableFqNames) {
print(callableDeclaration.name)
} else {
print(callableDeclaration.symbol.callableId)
}
idRenderer.renderCallableId(callableDeclaration.symbol.callableId)
}
is FirVariable -> {
if (!mode.renderCallableFqNames) {
print(callableDeclaration.name)
} else {
print(callableDeclaration.symbol.callableId)
}
idRenderer.renderCallableId(callableDeclaration.symbol.callableId)
}
else -> {}
}
@@ -16,6 +16,7 @@ internal interface FirRendererComponents {
val callArgumentsRenderer: FirCallArgumentsRenderer
val classMemberRenderer: FirClassMemberRenderer
val contractRenderer: ConeContractRenderer?
val idRenderer: ConeIdRenderer
val modifierRenderer: FirModifierRenderer
val packageDirectiveRenderer: FirPackageDirectiveRenderer?
val propertyAccessorRenderer: FirPropertyAccessorRenderer?