From dcfc20f1ff6a11178bd72e6d1f5cb25a76c68aea Mon Sep 17 00:00:00 2001 From: Leonid Startsev Date: Wed, 11 Oct 2023 19:05:47 +0200 Subject: [PATCH] Do not attempt to get field initializer if it is not available. This may happen on Native if the property is in another module. #KT-62522 Fixed Related to: KT-62523 --- .../serialization/compiler/backend/ir/BaseIrGenerator.kt | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/plugins/kotlinx-serialization/kotlinx-serialization.backend/src/org/jetbrains/kotlinx/serialization/compiler/backend/ir/BaseIrGenerator.kt b/plugins/kotlinx-serialization/kotlinx-serialization.backend/src/org/jetbrains/kotlinx/serialization/compiler/backend/ir/BaseIrGenerator.kt index 45c8f839e49..a4a0b7e1af6 100644 --- a/plugins/kotlinx-serialization/kotlinx-serialization.backend/src/org/jetbrains/kotlinx/serialization/compiler/backend/ir/BaseIrGenerator.kt +++ b/plugins/kotlinx-serialization/kotlinx-serialization.backend/src/org/jetbrains/kotlinx/serialization/compiler/backend/ir/BaseIrGenerator.kt @@ -238,12 +238,13 @@ abstract class BaseIrGenerator(private val currentClass: IrClass, final override // check for call to .shouldEncodeElementDefault val encodeDefaults = property.ir.getEncodeDefaultAnnotationValue() val field = - property.ir.backingField // Nullable when property from another module; can't compare it with default value on JS or Native - if (!property.optional || encodeDefaults == true || field == null) { + property.ir.backingField + val initializer = field?.initializer // FIXME: Null when property from another module; can't compare it with default value on JS or Native + if (!property.optional || encodeDefaults == true || field == null || initializer == null) { // emit call right away +elementCall } else { - val partB = irNotEquals(property.irGet(), initializerAdapter(field.initializer!!)) + val partB = irNotEquals(property.irGet(), initializerAdapter(initializer)) val condition = if (encodeDefaults == false) { // drop default without call to .shouldEncodeElementDefault