[Commonizer] Make CirProperty.compileTimeInitializer non-nullable
There is effectively no difference between null and CirConstantValue.NullValue recorded in compileTimeInitializer.
This commit is contained in:
+1
-1
@@ -15,5 +15,5 @@ interface CirProperty : CirFunctionOrProperty, CirLiftedUpDeclaration {
|
||||
val setter: CirPropertySetter?
|
||||
val backingFieldAnnotations: List<CirAnnotation>
|
||||
val delegateFieldAnnotations: List<CirAnnotation>
|
||||
val compileTimeInitializer: CirConstantValue<*>?
|
||||
val compileTimeInitializer: CirConstantValue<*>
|
||||
}
|
||||
|
||||
+3
-3
@@ -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<CirAnnotation>,
|
||||
delegateFieldAnnotations: List<CirAnnotation>,
|
||||
compileTimeInitializer: CirConstantValue<*>?
|
||||
compileTimeInitializer: CirConstantValue<*>
|
||||
): CirProperty {
|
||||
return CirPropertyImpl(
|
||||
annotations = annotations,
|
||||
|
||||
+1
-1
@@ -29,7 +29,7 @@ data class CirPropertyImpl(
|
||||
override val setter: CirPropertySetter?,
|
||||
override val backingFieldAnnotations: List<CirAnnotation>,
|
||||
override val delegateFieldAnnotations: List<CirAnnotation>,
|
||||
override val compileTimeInitializer: CirConstantValue<*>?
|
||||
override val compileTimeInitializer: CirConstantValue<*>
|
||||
) : CirProperty {
|
||||
// const property in "common" fragment is already lifted up
|
||||
override val isLiftedUp get() = isConst
|
||||
|
||||
+9
-3
@@ -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<CirProperty> = 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
|
||||
|
||||
Reference in New Issue
Block a user