diff --git a/native/commonizer/src/org/jetbrains/kotlin/descriptors/commonizer/cir/CirProperty.kt b/native/commonizer/src/org/jetbrains/kotlin/descriptors/commonizer/cir/CirProperty.kt index 7519b72b176..5e0f957514f 100644 --- a/native/commonizer/src/org/jetbrains/kotlin/descriptors/commonizer/cir/CirProperty.kt +++ b/native/commonizer/src/org/jetbrains/kotlin/descriptors/commonizer/cir/CirProperty.kt @@ -15,5 +15,5 @@ interface CirProperty : CirFunctionOrProperty, CirLiftedUpDeclaration { val setter: CirPropertySetter? val backingFieldAnnotations: List val delegateFieldAnnotations: List - val compileTimeInitializer: CirConstantValue<*>? + val compileTimeInitializer: CirConstantValue<*> } diff --git a/native/commonizer/src/org/jetbrains/kotlin/descriptors/commonizer/cir/factory/CirPropertyFactory.kt b/native/commonizer/src/org/jetbrains/kotlin/descriptors/commonizer/cir/factory/CirPropertyFactory.kt index 463dd325afc..1a593a27a45 100644 --- a/native/commonizer/src/org/jetbrains/kotlin/descriptors/commonizer/cir/factory/CirPropertyFactory.kt +++ b/native/commonizer/src/org/jetbrains/kotlin/descriptors/commonizer/cir/factory/CirPropertyFactory.kt @@ -6,9 +6,9 @@ package org.jetbrains.kotlin.descriptors.commonizer.cir.factory import org.jetbrains.kotlin.descriptors.CallableMemberDescriptor +import org.jetbrains.kotlin.descriptors.DescriptorVisibility import org.jetbrains.kotlin.descriptors.Modality import org.jetbrains.kotlin.descriptors.PropertyDescriptor -import org.jetbrains.kotlin.descriptors.DescriptorVisibility import org.jetbrains.kotlin.descriptors.commonizer.cir.* import org.jetbrains.kotlin.descriptors.commonizer.cir.impl.CirPropertyImpl import org.jetbrains.kotlin.descriptors.commonizer.utils.compactMap @@ -20,7 +20,7 @@ object CirPropertyFactory { constantValue = constantValue, owner = source, ) - } + } ?: CirConstantValue.NullValue return create( annotations = source.annotations.compactMap(CirAnnotationFactory::create), @@ -65,7 +65,7 @@ object CirPropertyFactory { setter: CirPropertySetter?, backingFieldAnnotations: List, delegateFieldAnnotations: List, - compileTimeInitializer: CirConstantValue<*>? + compileTimeInitializer: CirConstantValue<*> ): CirProperty { return CirPropertyImpl( annotations = annotations, diff --git a/native/commonizer/src/org/jetbrains/kotlin/descriptors/commonizer/cir/impl/CirPropertyImpl.kt b/native/commonizer/src/org/jetbrains/kotlin/descriptors/commonizer/cir/impl/CirPropertyImpl.kt index 779f520eb32..7f43955a3ae 100644 --- a/native/commonizer/src/org/jetbrains/kotlin/descriptors/commonizer/cir/impl/CirPropertyImpl.kt +++ b/native/commonizer/src/org/jetbrains/kotlin/descriptors/commonizer/cir/impl/CirPropertyImpl.kt @@ -29,7 +29,7 @@ data class CirPropertyImpl( override val setter: CirPropertySetter?, override val backingFieldAnnotations: List, override val delegateFieldAnnotations: List, - override val compileTimeInitializer: CirConstantValue<*>? + override val compileTimeInitializer: CirConstantValue<*> ) : CirProperty { // const property in "common" fragment is already lifted up override val isLiftedUp get() = isConst diff --git a/native/commonizer/src/org/jetbrains/kotlin/descriptors/commonizer/core/PropertyCommonizer.kt b/native/commonizer/src/org/jetbrains/kotlin/descriptors/commonizer/core/PropertyCommonizer.kt index 132b35859bd..7b98342c1c9 100644 --- a/native/commonizer/src/org/jetbrains/kotlin/descriptors/commonizer/core/PropertyCommonizer.kt +++ b/native/commonizer/src/org/jetbrains/kotlin/descriptors/commonizer/core/PropertyCommonizer.kt @@ -47,7 +47,7 @@ class PropertyCommonizer(classifiers: CirKnownClassifiers) : AbstractFunctionOrP setter = setter, backingFieldAnnotations = emptyList(), delegateFieldAnnotations = emptyList(), - compileTimeInitializer = constCompileTimeInitializer + compileTimeInitializer = constCompileTimeInitializer ?: CirConstantValue.NullValue ) } @@ -55,7 +55,7 @@ class PropertyCommonizer(classifiers: CirKnownClassifiers) : AbstractFunctionOrP super.initialize(first) constCommonizationState = if (first.isConst) { - first.compileTimeInitializer?.let(::ConstSameValue) ?: NonConst + first.compileTimeInitializer.takeIf { it != CirConstantValue.NullValue }?.let(::ConstSameValue) ?: NonConst } else { NonConst } @@ -105,11 +105,17 @@ class PropertyCommonizer(classifiers: CirKnownClassifiers) : AbstractFunctionOrP private sealed class ConstCommonizationState { object NonConst : ConstCommonizationState() + abstract class Const : ConstCommonizationState() { val properties: MutableList = mutableListOf() } - class ConstSameValue(val compileTimeInitializer: CirConstantValue<*>) : Const() + class ConstSameValue(val compileTimeInitializer: CirConstantValue<*>) : Const() { + init { + check(compileTimeInitializer != CirConstantValue.NullValue) + } + } + class ConstMultipleValues(previous: ConstSameValue) : Const() { init { properties += previous.properties