[IR generator] Deduplicate field copying logic
This commit is contained in:
committed by
Space Team
parent
5f04bc8a27
commit
7bd4de65f8
+2
-8
@@ -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
|
||||
|
||||
+2
-9
@@ -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
|
||||
|
||||
+13
@@ -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
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user