From 7bd4de65f800b66d6f32b99682fb2b41d570e165 Mon Sep 17 00:00:00 2001 From: Sergej Jaskiewicz Date: Thu, 16 Nov 2023 19:15:34 +0100 Subject: [PATCH] [IR generator] Deduplicate field copying logic --- .../kotlin/fir/tree/generator/model/Field.kt | 10 ++-------- .../jetbrains/kotlin/ir/generator/model/Model.kt | 11 ++--------- .../kotlin/generators/tree/AbstractField.kt | 13 +++++++++++++ 3 files changed, 17 insertions(+), 17 deletions(-) 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 581219b47cd..a5388822b68 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 @@ -43,21 +43,15 @@ sealed class Field : AbstractField() { updateFieldsInCopy(it) } - protected fun updateFieldsInCopy(copy: Field) { + override fun updateFieldsInCopy(copy: Field) { + super.updateFieldsInCopy(copy) if (copy !is FieldWithDefault) { copy.needsSeparateTransform = needsSeparateTransform copy.needTransformInOtherChildren = needTransformInOtherChildren - copy.useInBaseTransformerDetection = useInBaseTransformerDetection - copy.isMutable = isMutable - copy.overriddenTypes += overriddenTypes - copy.arbitraryImportables += arbitraryImportables copy.useNullableForReplace = useNullableForReplace copy.customInitializationCall = customInitializationCall - copy.optInAnnotation = optInAnnotation } - copy.fromParent = fromParent copy.parentHasSeparateTransform = parentHasSeparateTransform - copy.kDoc = kDoc } protected abstract fun internalCopy(): Field 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 3e40ae62b39..20604de970b 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 @@ -187,19 +187,12 @@ sealed class Field( override fun copy() = internalCopy().also(::updateFieldsInCopy) - protected fun updateFieldsInCopy(copy: Field) { - copy.needAcceptAndTransform = needAcceptAndTransform - copy.useInBaseTransformerDetection = useInBaseTransformerDetection - copy.isMutable = isMutable - copy.optInAnnotation = optInAnnotation + override fun updateFieldsInCopy(copy: Field) { + super.updateFieldsInCopy(copy) copy.baseDefaultValue = baseDefaultValue copy.baseGetter = baseGetter copy.customUseInIrFactoryStrategy = customUseInIrFactoryStrategy - copy.fromParent = fromParent copy.customSetter = customSetter - copy.visibility = visibility - copy.deprecation = deprecation - copy.kDoc = kDoc } protected abstract fun internalCopy(): Field 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 index f1e2a30e171..219a3d3586e 100644 --- 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 @@ -87,4 +87,17 @@ abstract class AbstractField> { * Returns a copy of this field. */ abstract fun copy(): Field + + protected open fun updateFieldsInCopy(copy: Field) { + copy.kDoc = kDoc + copy.arbitraryImportables += arbitraryImportables + copy.optInAnnotation = optInAnnotation + copy.isMutable = isMutable + copy.deprecation = deprecation + copy.visibility = visibility + copy.fromParent = fromParent + copy.useInBaseTransformerDetection = useInBaseTransformerDetection + copy.needAcceptAndTransform = needAcceptAndTransform + copy.overriddenTypes += overriddenTypes + } }