From f3016e1dcb605293c4f621ed9e0e5a35fa7e7d8e Mon Sep 17 00:00:00 2001 From: Sergej Jaskiewicz Date: Sun, 19 Nov 2023 14:47:29 +0100 Subject: [PATCH] [FIR generator] Avoid FIR-specific code in AbstractBuilderPrinter --- .../fir/tree/generator/model/Element.kt | 4 +++- .../kotlin/ir/generator/model/Model.kt | 3 ++- .../generators/tree/AbstractBuilderPrinter.kt | 19 ++++++++++++++----- .../kotlin/generators/tree/AbstractElement.kt | 5 +++++ .../generators/tree/AbstractImplementation.kt | 8 ++++++-- .../kotlin/generators/tree/Builder.kt | 8 ++------ 6 files changed, 32 insertions(+), 15 deletions(-) diff --git a/compiler/fir/tree/tree-generator/src/org/jetbrains/kotlin/fir/tree/generator/model/Element.kt b/compiler/fir/tree/tree-generator/src/org/jetbrains/kotlin/fir/tree/generator/model/Element.kt index 1638b17b510..6e091a79ba6 100644 --- a/compiler/fir/tree/tree-generator/src/org/jetbrains/kotlin/fir/tree/generator/model/Element.kt +++ b/compiler/fir/tree/tree-generator/src/org/jetbrains/kotlin/fir/tree/generator/model/Element.kt @@ -33,7 +33,9 @@ class Element(name: String, override val propertyName: String, kind: Kind) : Abs override var kDoc: String? = null override val fields = mutableSetOf() - override val typeName: String = "Fir$name" + + override val namePrefix: String + get() = "Fir" override val packageName: String = BASE_PACKAGE + kind.packageName.let { if (it.isBlank()) it else "." + it } diff --git a/compiler/ir/ir.tree/tree-generator/src/org/jetbrains/kotlin/ir/generator/model/Model.kt b/compiler/ir/ir.tree/tree-generator/src/org/jetbrains/kotlin/ir/generator/model/Model.kt index b0c4215ecb4..0a57e4a9f6e 100644 --- a/compiler/ir/ir.tree/tree-generator/src/org/jetbrains/kotlin/ir/generator/model/Model.kt +++ b/compiler/ir/ir.tree/tree-generator/src/org/jetbrains/kotlin/ir/generator/model/Model.kt @@ -76,7 +76,8 @@ class Element( override var kind: ImplementationKind? = null - override val typeName = "Ir$name" + override val namePrefix: String + get() = "Ir" /** * Whether this element is semantically a leaf element in the hierarchy. diff --git a/generators/tree-generator-common/src/org/jetbrains/kotlin/generators/tree/AbstractBuilderPrinter.kt b/generators/tree-generator-common/src/org/jetbrains/kotlin/generators/tree/AbstractBuilderPrinter.kt index aa46874eff4..1fbfe4fc87c 100644 --- a/generators/tree-generator-common/src/org/jetbrains/kotlin/generators/tree/AbstractBuilderPrinter.kt +++ b/generators/tree-generator-common/src/org/jetbrains/kotlin/generators/tree/AbstractBuilderPrinter.kt @@ -162,6 +162,18 @@ abstract class AbstractBuilderPrinter) = + "build" + builder.implementation.run { name?.removePrefix(namePrefix) ?: element.name } + context(ImportCollector) private fun SmartPrinter.printDslBuildFunction( builder: LeafBuilder, @@ -173,10 +185,9 @@ abstract class AbstractBuilderPrinter( */ abstract val propertyName: String + abstract val namePrefix: String + abstract val kDoc: String? abstract val fields: Set @@ -70,6 +72,9 @@ abstract class AbstractElement( override val allParents: List get() = elementParents.map { it.element } + override val typeName: String + get() = namePrefix + name + context(ImportCollector) final override fun renderTo(appendable: Appendable) { addImport(this) diff --git a/generators/tree-generator-common/src/org/jetbrains/kotlin/generators/tree/AbstractImplementation.kt b/generators/tree-generator-common/src/org/jetbrains/kotlin/generators/tree/AbstractImplementation.kt index cc7e1cdae16..13f69a01f70 100644 --- a/generators/tree-generator-common/src/org/jetbrains/kotlin/generators/tree/AbstractImplementation.kt +++ b/generators/tree-generator-common/src/org/jetbrains/kotlin/generators/tree/AbstractImplementation.kt @@ -23,7 +23,11 @@ abstract class AbstractImplementation( override val allParents: List get() = listOf(element) - override val typeName: String = name ?: (element.typeName + "Impl") + val namePrefix: String + get() = element.namePrefix + + override val typeName: String + get() = name ?: (element.typeName + "Impl") context(ImportCollector) override fun renderTo(appendable: Appendable) { @@ -87,4 +91,4 @@ abstract class AbstractImplementation( } var builder: LeafBuilder? = null -} \ No newline at end of file +} diff --git a/generators/tree-generator-common/src/org/jetbrains/kotlin/generators/tree/Builder.kt b/generators/tree-generator-common/src/org/jetbrains/kotlin/generators/tree/Builder.kt index 9e5b0a39294..bbdff9c065c 100644 --- a/generators/tree-generator-common/src/org/jetbrains/kotlin/generators/tree/Builder.kt +++ b/generators/tree-generator-common/src/org/jetbrains/kotlin/generators/tree/Builder.kt @@ -51,11 +51,7 @@ class LeafBuilder( Element : AbstractElement, Implementation : AbstractImplementation { override val typeName: String - get() = if (implementation.name != null) { - "${implementation.name}Builder" - } else { - "${implementation.element.typeName}Builder" - } + get() = (implementation.name ?: implementation.element.typeName) + "Builder" override val allFields: List by lazy { implementation.fieldsWithoutDefault } @@ -87,4 +83,4 @@ class IntermediateBuilder( } override val uselessFields: List = emptyList() -} \ No newline at end of file +}