[IR generator] Deduplicate field copying logic

This commit is contained in:
Sergej Jaskiewicz
2023-11-16 19:15:34 +01:00
committed by Space Team
parent 5f04bc8a27
commit 7bd4de65f8
3 changed files with 17 additions and 17 deletions
@@ -43,21 +43,15 @@ sealed class Field : AbstractField<Field>() {
updateFieldsInCopy(it) updateFieldsInCopy(it)
} }
protected fun updateFieldsInCopy(copy: Field) { override fun updateFieldsInCopy(copy: Field) {
super.updateFieldsInCopy(copy)
if (copy !is FieldWithDefault) { if (copy !is FieldWithDefault) {
copy.needsSeparateTransform = needsSeparateTransform copy.needsSeparateTransform = needsSeparateTransform
copy.needTransformInOtherChildren = needTransformInOtherChildren copy.needTransformInOtherChildren = needTransformInOtherChildren
copy.useInBaseTransformerDetection = useInBaseTransformerDetection
copy.isMutable = isMutable
copy.overriddenTypes += overriddenTypes
copy.arbitraryImportables += arbitraryImportables
copy.useNullableForReplace = useNullableForReplace copy.useNullableForReplace = useNullableForReplace
copy.customInitializationCall = customInitializationCall copy.customInitializationCall = customInitializationCall
copy.optInAnnotation = optInAnnotation
} }
copy.fromParent = fromParent
copy.parentHasSeparateTransform = parentHasSeparateTransform copy.parentHasSeparateTransform = parentHasSeparateTransform
copy.kDoc = kDoc
} }
protected abstract fun internalCopy(): Field protected abstract fun internalCopy(): Field
@@ -187,19 +187,12 @@ sealed class Field(
override fun copy() = internalCopy().also(::updateFieldsInCopy) override fun copy() = internalCopy().also(::updateFieldsInCopy)
protected fun updateFieldsInCopy(copy: Field) { override fun updateFieldsInCopy(copy: Field) {
copy.needAcceptAndTransform = needAcceptAndTransform super.updateFieldsInCopy(copy)
copy.useInBaseTransformerDetection = useInBaseTransformerDetection
copy.isMutable = isMutable
copy.optInAnnotation = optInAnnotation
copy.baseDefaultValue = baseDefaultValue copy.baseDefaultValue = baseDefaultValue
copy.baseGetter = baseGetter copy.baseGetter = baseGetter
copy.customUseInIrFactoryStrategy = customUseInIrFactoryStrategy copy.customUseInIrFactoryStrategy = customUseInIrFactoryStrategy
copy.fromParent = fromParent
copy.customSetter = customSetter copy.customSetter = customSetter
copy.visibility = visibility
copy.deprecation = deprecation
copy.kDoc = kDoc
} }
protected abstract fun internalCopy(): Field protected abstract fun internalCopy(): Field
@@ -87,4 +87,17 @@ abstract class AbstractField<Field : AbstractField<Field>> {
* Returns a copy of this field. * Returns a copy of this field.
*/ */
abstract fun copy(): 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
}
} }