Extract separate FirPackageDirectiveRenderer

This commit is contained in:
Mikhail Glukhikh
2022-07-06 15:11:45 +02:00
committed by Space
parent bc49107d25
commit 9890066b72
3 changed files with 24 additions and 6 deletions
@@ -0,0 +1,17 @@
/*
* 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.FirPackageDirective
class FirPackageDirectiveRenderer internal constructor(components: FirRendererComponents) : FirRendererComponents by components {
fun render(packageDirective: FirPackageDirective) {
if (!packageDirective.packageFqName.isRoot) {
printer.println("package ${packageDirective.packageFqName.asString()}")
printer.println()
}
}
}
@@ -67,6 +67,8 @@ open class FirRenderer private constructor(
override var bodyRenderer: FirBodyRenderer? = null
override var packageDirectiveRenderer: FirPackageDirectiveRenderer? = null
override lateinit var declarationRenderer: FirDeclarationRenderer
override lateinit var typeRenderer: ConeTypeRenderer
@@ -174,6 +176,8 @@ open class FirRenderer private constructor(
else -> FirDeclarationRenderer(components)
}
private val packageDirectiveRenderer = if (mode.renderPackageDirective) FirPackageDirectiveRenderer(components) else null
@Suppress("LeakingThis")
private val typeRenderer =
if (mode.renderDetailedTypeReferences) ConeTypeRendererForDebugging(builder) else ConeTypeRenderer(builder)
@@ -183,6 +187,7 @@ open class FirRenderer private constructor(
components.annotationRenderer = annotationRenderer
components.bodyRenderer = bodyRenderer
components.declarationRenderer = declarationRenderer
components.packageDirectiveRenderer = packageDirectiveRenderer
components.typeRenderer = typeRenderer
@Suppress("LeakingThis")
components.printer = this
@@ -1406,12 +1411,7 @@ open class FirRenderer private constructor(
}
override fun visitPackageDirective(packageDirective: FirPackageDirective) {
if (mode.renderPackageDirective) {
if (!packageDirective.packageFqName.isRoot) {
println("package ${packageDirective.packageFqName.asString()}")
println()
}
}
packageDirectiveRenderer?.render(packageDirective)
}
}
}
@@ -11,5 +11,6 @@ internal interface FirRendererComponents {
val declarationRenderer: FirDeclarationRenderer
val annotationRenderer: FirAnnotationRenderer?
val bodyRenderer: FirBodyRenderer?
val packageDirectiveRenderer: FirPackageDirectiveRenderer?
val typeRenderer: ConeTypeRenderer
}