diff --git a/compiler/fir/tree/tree-generator/src/org/jetbrains/kotlin/fir/tree/generator/model/Builder.kt b/compiler/fir/tree/tree-generator/src/org/jetbrains/kotlin/fir/tree/generator/model/Builder.kt index 573774b765d..1fa65f9473d 100644 --- a/compiler/fir/tree/tree-generator/src/org/jetbrains/kotlin/fir/tree/generator/model/Builder.kt +++ b/compiler/fir/tree/tree-generator/src/org/jetbrains/kotlin/fir/tree/generator/model/Builder.kt @@ -5,9 +5,9 @@ package org.jetbrains.kotlin.fir.tree.generator.model -import org.jetbrains.kotlin.fir.tree.generator.printer.generics import org.jetbrains.kotlin.generators.tree.FieldContainer import org.jetbrains.kotlin.generators.tree.Importable +import org.jetbrains.kotlin.generators.tree.generics private const val DEFAULT_BUILDER_PACKAGE = "org.jetbrains.kotlin.fir.tree.builder" 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 c3c3f2e6a72..22fde26cd31 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 @@ -6,21 +6,14 @@ package org.jetbrains.kotlin.fir.tree.generator.model import org.jetbrains.kotlin.fir.tree.generator.printer.BASE_PACKAGE -import org.jetbrains.kotlin.fir.tree.generator.printer.generics -import org.jetbrains.kotlin.generators.tree.typeWithArguments import org.jetbrains.kotlin.fir.tree.generator.util.set -import org.jetbrains.kotlin.generators.tree.FieldContainer import org.jetbrains.kotlin.generators.tree.ImplementationKind import org.jetbrains.kotlin.generators.tree.Importable import org.jetbrains.kotlin.generators.tree.TypeArgument -import org.jetbrains.kotlin.generators.tree.ImplementationKindOwner +import org.jetbrains.kotlin.generators.tree.typeWithArguments +import org.jetbrains.kotlin.generators.tree.AbstractElement as CommonAbstractElement -interface AbstractElement : FieldContainer, ImplementationKindOwner { - val name: String - val fields: Set - val parents: List - val typeArguments: List - val parentsArguments: Map> +interface AbstractElement : CommonAbstractElement { val baseTransformerType: AbstractElement? val transformerType: AbstractElement val doesNotNeedImplementation: Boolean @@ -29,15 +22,7 @@ interface AbstractElement : FieldContainer, ImplementationKindOwner { val allFirFields: List val defaultImplementation: Implementation? val customImplementations: List - val overridenFields: Map> val useNullableForReplace: Set - - val isSealed: Boolean - get() = false - - override val allParents: List get() = parents - - override fun getTypeWithArguments(notNull: Boolean): String = type + generics } class Element(override val name: String, kind: Kind) : AbstractElement { diff --git a/compiler/fir/tree/tree-generator/src/org/jetbrains/kotlin/fir/tree/generator/printer/utils.kt b/compiler/fir/tree/tree-generator/src/org/jetbrains/kotlin/fir/tree/generator/printer/utils.kt index 793c415ba57..e0ca8a6cec0 100644 --- a/compiler/fir/tree/tree-generator/src/org/jetbrains/kotlin/fir/tree/generator/printer/utils.kt +++ b/compiler/fir/tree/tree-generator/src/org/jetbrains/kotlin/fir/tree/generator/printer/utils.kt @@ -169,11 +169,6 @@ val Element.safeDecapitalizedName: String get() = if (name == "Class") "klass" e val ImplementationWithArg.generics: String get() = argument?.let { "<${it.type}>" } ?: "" -val AbstractElement.generics: String - get() = typeArguments.takeIf { it.isNotEmpty() } - ?.let { it.joinToString(", ", "<", ">") { it.name } } - ?: "" - val Field.generics: String get() = arguments.takeIf { it.isNotEmpty() } ?.let { it.joinToString(", ", "<", ">") { it.typeWithArguments } } diff --git a/generators/tree-generator-common/src/org/jetbrains/kotlin/generators/tree/AbstractElement.kt b/generators/tree-generator-common/src/org/jetbrains/kotlin/generators/tree/AbstractElement.kt new file mode 100644 index 00000000000..43326b79ce6 --- /dev/null +++ b/generators/tree-generator-common/src/org/jetbrains/kotlin/generators/tree/AbstractElement.kt @@ -0,0 +1,37 @@ +/* + * 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.generators.tree + +/** + * A common interface representing a FIR or IR tree element. + */ +interface AbstractElement, Field : AbstractField> : FieldContainer, ImplementationKindOwner { + + val name: String + + val fields: Set + + val parents: List + + val typeArguments: List + + val parentsArguments: Map> + + val overridenFields: Map> + + val isSealed: Boolean + get() = false + + override val allParents: List + get() = parents + + override fun getTypeWithArguments(notNull: Boolean): String = type + generics +} + +val AbstractElement<*, *>.generics: String + get() = typeArguments.takeIf { it.isNotEmpty() } + ?.let { it.joinToString(", ", "<", ">") { it.name } } + ?: "" \ No newline at end of file