[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 setter: CirPropertySetter?
|
||||||
val backingFieldAnnotations: List<CirAnnotation>
|
val backingFieldAnnotations: List<CirAnnotation>
|
||||||
val delegateFieldAnnotations: 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
|
package org.jetbrains.kotlin.descriptors.commonizer.cir.factory
|
||||||
|
|
||||||
import org.jetbrains.kotlin.descriptors.CallableMemberDescriptor
|
import org.jetbrains.kotlin.descriptors.CallableMemberDescriptor
|
||||||
|
import org.jetbrains.kotlin.descriptors.DescriptorVisibility
|
||||||
import org.jetbrains.kotlin.descriptors.Modality
|
import org.jetbrains.kotlin.descriptors.Modality
|
||||||
import org.jetbrains.kotlin.descriptors.PropertyDescriptor
|
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.*
|
||||||
import org.jetbrains.kotlin.descriptors.commonizer.cir.impl.CirPropertyImpl
|
import org.jetbrains.kotlin.descriptors.commonizer.cir.impl.CirPropertyImpl
|
||||||
import org.jetbrains.kotlin.descriptors.commonizer.utils.compactMap
|
import org.jetbrains.kotlin.descriptors.commonizer.utils.compactMap
|
||||||
@@ -20,7 +20,7 @@ object CirPropertyFactory {
|
|||||||
constantValue = constantValue,
|
constantValue = constantValue,
|
||||||
owner = source,
|
owner = source,
|
||||||
)
|
)
|
||||||
}
|
} ?: CirConstantValue.NullValue
|
||||||
|
|
||||||
return create(
|
return create(
|
||||||
annotations = source.annotations.compactMap(CirAnnotationFactory::create),
|
annotations = source.annotations.compactMap(CirAnnotationFactory::create),
|
||||||
@@ -65,7 +65,7 @@ object CirPropertyFactory {
|
|||||||
setter: CirPropertySetter?,
|
setter: CirPropertySetter?,
|
||||||
backingFieldAnnotations: List<CirAnnotation>,
|
backingFieldAnnotations: List<CirAnnotation>,
|
||||||
delegateFieldAnnotations: List<CirAnnotation>,
|
delegateFieldAnnotations: List<CirAnnotation>,
|
||||||
compileTimeInitializer: CirConstantValue<*>?
|
compileTimeInitializer: CirConstantValue<*>
|
||||||
): CirProperty {
|
): CirProperty {
|
||||||
return CirPropertyImpl(
|
return CirPropertyImpl(
|
||||||
annotations = annotations,
|
annotations = annotations,
|
||||||
|
|||||||
+1
-1
@@ -29,7 +29,7 @@ data class CirPropertyImpl(
|
|||||||
override val setter: CirPropertySetter?,
|
override val setter: CirPropertySetter?,
|
||||||
override val backingFieldAnnotations: List<CirAnnotation>,
|
override val backingFieldAnnotations: List<CirAnnotation>,
|
||||||
override val delegateFieldAnnotations: List<CirAnnotation>,
|
override val delegateFieldAnnotations: List<CirAnnotation>,
|
||||||
override val compileTimeInitializer: CirConstantValue<*>?
|
override val compileTimeInitializer: CirConstantValue<*>
|
||||||
) : CirProperty {
|
) : CirProperty {
|
||||||
// const property in "common" fragment is already lifted up
|
// const property in "common" fragment is already lifted up
|
||||||
override val isLiftedUp get() = isConst
|
override val isLiftedUp get() = isConst
|
||||||
|
|||||||
+9
-3
@@ -47,7 +47,7 @@ class PropertyCommonizer(classifiers: CirKnownClassifiers) : AbstractFunctionOrP
|
|||||||
setter = setter,
|
setter = setter,
|
||||||
backingFieldAnnotations = emptyList(),
|
backingFieldAnnotations = emptyList(),
|
||||||
delegateFieldAnnotations = emptyList(),
|
delegateFieldAnnotations = emptyList(),
|
||||||
compileTimeInitializer = constCompileTimeInitializer
|
compileTimeInitializer = constCompileTimeInitializer ?: CirConstantValue.NullValue
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -55,7 +55,7 @@ class PropertyCommonizer(classifiers: CirKnownClassifiers) : AbstractFunctionOrP
|
|||||||
super.initialize(first)
|
super.initialize(first)
|
||||||
|
|
||||||
constCommonizationState = if (first.isConst) {
|
constCommonizationState = if (first.isConst) {
|
||||||
first.compileTimeInitializer?.let(::ConstSameValue) ?: NonConst
|
first.compileTimeInitializer.takeIf { it != CirConstantValue.NullValue }?.let(::ConstSameValue) ?: NonConst
|
||||||
} else {
|
} else {
|
||||||
NonConst
|
NonConst
|
||||||
}
|
}
|
||||||
@@ -105,11 +105,17 @@ class PropertyCommonizer(classifiers: CirKnownClassifiers) : AbstractFunctionOrP
|
|||||||
|
|
||||||
private sealed class ConstCommonizationState {
|
private sealed class ConstCommonizationState {
|
||||||
object NonConst : ConstCommonizationState()
|
object NonConst : ConstCommonizationState()
|
||||||
|
|
||||||
abstract class Const : ConstCommonizationState() {
|
abstract class Const : ConstCommonizationState() {
|
||||||
val properties: MutableList<CirProperty> = mutableListOf()
|
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() {
|
class ConstMultipleValues(previous: ConstSameValue) : Const() {
|
||||||
init {
|
init {
|
||||||
properties += previous.properties
|
properties += previous.properties
|
||||||
|
|||||||
Reference in New Issue
Block a user