From a58f29aa06b0d51990b1e6bd8f431efb43779eb3 Mon Sep 17 00:00:00 2001 From: Leonid Startsev Date: Tue, 20 Apr 2021 23:16:11 +0300 Subject: [PATCH] Remove unnecessary ignoreIndexTo outside writeSelf It never worked: descriptor.declaresDefaultValue used by property.isOptional works only for current module (since it looks up psi), so we never access default value initializers outside current module --- .../compiler/backend/ir/SerializerIrGenerator.kt | 12 +----------- 1 file changed, 1 insertion(+), 11 deletions(-) diff --git a/plugins/kotlin-serialization/kotlin-serialization-compiler/src/org/jetbrains/kotlinx/serialization/compiler/backend/ir/SerializerIrGenerator.kt b/plugins/kotlin-serialization/kotlin-serialization-compiler/src/org/jetbrains/kotlinx/serialization/compiler/backend/ir/SerializerIrGenerator.kt index 99305dd577a..29336613039 100644 --- a/plugins/kotlin-serialization/kotlin-serialization-compiler/src/org/jetbrains/kotlinx/serialization/compiler/backend/ir/SerializerIrGenerator.kt +++ b/plugins/kotlin-serialization/kotlin-serialization-compiler/src/org/jetbrains/kotlinx/serialization/compiler/backend/ir/SerializerIrGenerator.kt @@ -272,16 +272,6 @@ open class SerializerIrGenerator( }) +irInvoke(null, writeSelfFunction.symbol, typeArgs, args) } else { - // No write$Self, old behaviour: - // Ignore comparing to default values of properties from superclass, - // because we do not have access to their fields (and initializers), if superclass is in another module. - val superClass = serializableIrClass.getSuperClassOrAny().descriptor - val ignoreIndexTo = if (superClass.isInternalSerializable) { - bindingContext.serializablePropertiesFor(superClass).size - } else { - -1 - } - val propertyByParamReplacer: (ValueParameterDescriptor) -> IrExpression? = createPropertyByParamReplacer(serializableIrClass, serializableProperties, objectToSerialize, bindingContext) @@ -291,7 +281,7 @@ open class SerializerIrGenerator( serializeAllProperties( this@SerializerIrGenerator, serializableIrClass, serializableProperties, objectToSerialize, - localOutput, localSerialDesc, kOutputClass, ignoreIndexTo, initializerAdapter + localOutput, localSerialDesc, kOutputClass, ignoreIndexTo = -1, initializerAdapter ) { it, _ -> val (_, ir) = localSerializersFieldsDescriptors[it] irGetField(irGet(saveFunc.dispatchReceiverParameter!!), ir.backingField!!)