[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)
}
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
@@ -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
@@ -87,4 +87,17 @@ abstract class AbstractField<Field : AbstractField<Field>> {
* 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
}
}