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 9e9c6b5a0a1..2c82a28013b 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,6 +5,7 @@ package org.jetbrains.kotlin.fir.tree.generator.model +import org.jetbrains.kotlin.generators.tree.FieldContainer import org.jetbrains.kotlin.generators.tree.Importable 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 44ec3c731db..ebd3d915357 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 @@ -8,6 +8,7 @@ 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.typeWithArguments import org.jetbrains.kotlin.fir.tree.generator.util.set +import org.jetbrains.kotlin.generators.tree.FieldContainer import org.jetbrains.kotlin.generators.tree.Importable interface KindOwner : Importable { @@ -15,11 +16,6 @@ interface KindOwner : Importable { val allParents: List } -interface FieldContainer { - val allFields: List - operator fun get(fieldName: String): Field? -} - interface AbstractElement : FieldContainer, KindOwner { val name: String val fields: Set diff --git a/compiler/fir/tree/tree-generator/src/org/jetbrains/kotlin/fir/tree/generator/model/Field.kt b/compiler/fir/tree/tree-generator/src/org/jetbrains/kotlin/fir/tree/generator/model/Field.kt index 811eee402aa..d968079ba01 100644 --- a/compiler/fir/tree/tree-generator/src/org/jetbrains/kotlin/fir/tree/generator/model/Field.kt +++ b/compiler/fir/tree/tree-generator/src/org/jetbrains/kotlin/fir/tree/generator/model/Field.kt @@ -8,32 +8,20 @@ package org.jetbrains.kotlin.fir.tree.generator.model import org.jetbrains.kotlin.fir.tree.generator.printer.typeWithArguments import org.jetbrains.kotlin.generators.tree.ArbitraryImportable import org.jetbrains.kotlin.generators.tree.Importable +import org.jetbrains.kotlin.generators.tree.AbstractField -sealed class Field : Importable { - abstract val name: String - open val arguments = mutableListOf() - abstract val nullable: Boolean - abstract var isVolatile: Boolean - abstract var isFinal: Boolean - abstract var isLateinit: Boolean - abstract var isParameter: Boolean +sealed class Field : AbstractField() { open var withReplace: Boolean = false abstract val isFirType: Boolean - var fromParent: Boolean = false open var needsSeparateTransform: Boolean = false var parentHasSeparateTransform: Boolean = true open var needTransformInOtherChildren: Boolean = false open var customInitializationCall: String? = null - open val arbitraryImportables: MutableList = mutableListOf() - open var optInAnnotation: ArbitraryImportable? = null open val defaultValueInImplementation: String? get() = null - abstract var isMutable: Boolean abstract var isMutableOrEmpty: Boolean open var isMutableInInterface: Boolean = false - open val withGetter: Boolean get() = false - open val customSetter: String? get() = null open val fromDelegate: Boolean get() = false open val overridenTypes: MutableSet = mutableSetOf() @@ -65,21 +53,6 @@ sealed class Field : Importable { protected abstract fun internalCopy(): Field - override fun toString(): String { - return name - } - - override fun equals(other: Any?): Boolean { - if (this === other) return true - if (other == null) return false - if (javaClass != other.javaClass) return false - other as Field - return name == other.name - } - - override fun hashCode(): Int { - return name.hashCode() - } } // ----------- Field with default ----------- diff --git a/compiler/fir/tree/tree-generator/src/org/jetbrains/kotlin/fir/tree/generator/model/Implementation.kt b/compiler/fir/tree/tree-generator/src/org/jetbrains/kotlin/fir/tree/generator/model/Implementation.kt index 9db54bd6c16..b7668caaf67 100644 --- a/compiler/fir/tree/tree-generator/src/org/jetbrains/kotlin/fir/tree/generator/model/Implementation.kt +++ b/compiler/fir/tree/tree-generator/src/org/jetbrains/kotlin/fir/tree/generator/model/Implementation.kt @@ -6,6 +6,7 @@ package org.jetbrains.kotlin.fir.tree.generator.model import org.jetbrains.kotlin.generators.tree.ArbitraryImportable +import org.jetbrains.kotlin.generators.tree.FieldContainer import org.jetbrains.kotlin.generators.tree.Importable class ImplementationWithArg( diff --git a/generators/tree-generator-common/src/org/jetbrains/kotlin/generators/tree/AbstractField.kt b/generators/tree-generator-common/src/org/jetbrains/kotlin/generators/tree/AbstractField.kt new file mode 100644 index 00000000000..4580c100b45 --- /dev/null +++ b/generators/tree-generator-common/src/org/jetbrains/kotlin/generators/tree/AbstractField.kt @@ -0,0 +1,49 @@ +/* + * 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 + +abstract class AbstractField : Importable { + + abstract val name: String + + open val arguments = mutableListOf() + + abstract val nullable: Boolean + + abstract var isVolatile: Boolean + + abstract var isFinal: Boolean + + abstract var isLateinit: Boolean + + abstract var isParameter: Boolean + + open val arbitraryImportables: MutableList = mutableListOf() + + open var optInAnnotation: ArbitraryImportable? = null + + abstract var isMutable: Boolean + open val withGetter: Boolean get() = false + open val customSetter: String? get() = null + + var fromParent: Boolean = false + + override fun toString(): String { + return name + } + + override fun equals(other: Any?): Boolean { + if (this === other) return true + if (other == null) return false + if (javaClass != other.javaClass) return false + other as AbstractField + return name == other.name + } + + override fun hashCode(): Int { + return name.hashCode() + } +} \ No newline at end of file diff --git a/generators/tree-generator-common/src/org/jetbrains/kotlin/generators/tree/FieldContainer.kt b/generators/tree-generator-common/src/org/jetbrains/kotlin/generators/tree/FieldContainer.kt new file mode 100644 index 00000000000..5aba21a4f89 --- /dev/null +++ b/generators/tree-generator-common/src/org/jetbrains/kotlin/generators/tree/FieldContainer.kt @@ -0,0 +1,11 @@ +/* + * 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 + +interface FieldContainer { + val allFields: List + operator fun get(fieldName: String): AbstractField? +} \ No newline at end of file