diff --git a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/renderer/FirPackageDirectiveRenderer.kt b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/renderer/FirPackageDirectiveRenderer.kt new file mode 100644 index 00000000000..2d3bec72610 --- /dev/null +++ b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/renderer/FirPackageDirectiveRenderer.kt @@ -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() + } + } +} \ No newline at end of file diff --git a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/renderer/FirRenderer.kt b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/renderer/FirRenderer.kt index f349b4f0655..74231ae4ef7 100644 --- a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/renderer/FirRenderer.kt +++ b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/renderer/FirRenderer.kt @@ -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) } } } diff --git a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/renderer/FirRendererComponents.kt b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/renderer/FirRendererComponents.kt index a78913d7551..56c388798b8 100644 --- a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/renderer/FirRendererComponents.kt +++ b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/renderer/FirRendererComponents.kt @@ -11,5 +11,6 @@ internal interface FirRendererComponents { val declarationRenderer: FirDeclarationRenderer val annotationRenderer: FirAnnotationRenderer? val bodyRenderer: FirBodyRenderer? + val packageDirectiveRenderer: FirPackageDirectiveRenderer? val typeRenderer: ConeTypeRenderer } \ No newline at end of file