Experiment: do not serialize compile-time constant initializers for non-const properties
diff --git a/compiler/serialization/src/org/jetbrains/kotlin/serialization/SerializerExtensionBase.kt b/compiler/serialization/src/org/jetbrains/kotlin/serialization/SerializerExtensionBase.kt index 8594932..a654f69 100644 --- a/compiler/serialization/src/org/jetbrains/kotlin/serialization/SerializerExtensionBase.kt +++ b/compiler/serialization/src/org/jetbrains/kotlin/serialization/SerializerExtensionBase.kt
@@ -100,7 +100,7 @@ } } val constantInitializer = descriptor.compileTimeInitializer ?: return - if (constantInitializer !is NullValue) { + if (constantInitializer !is NullValue && descriptor.isConst) { proto.setExtension(protocol.compileTimeValue, annotationSerializer.valueProto(constantInitializer).build()) } }
diff --git a/compiler/testData/serialization/builtinsSerializer/compileTimeConstants.txt b/compiler/testData/serialization/builtinsSerializer/compileTimeConstants.txt index a36c600..a83e71b 100644 --- a/compiler/testData/serialization/builtinsSerializer/compileTimeConstants.txt +++ b/compiler/testData/serialization/builtinsSerializer/compileTimeConstants.txt
@@ -1,34 +1,34 @@ package test -public val a: kotlin.Int = 10 -public val arrayConst: kotlin.Any = {1.toByte(), 2.toByte()} -public val b: kotlin.Int = 30 -public val booleanConst: kotlin.Boolean = true -public val byteConst: kotlin.Byte = 10.toByte() -public val charConst: kotlin.Char = \u0041 ('A') -public val doubleConst: kotlin.Double = 3.0.toDouble() -public val enumConst: test.Weapon? = Weapon.ROCK -public val floatConst: kotlin.Float = 2.0.toFloat() -public val intConst: kotlin.Int = 30 -public val longConst: kotlin.Long = 40.toLong() -public val shortConst: kotlin.Short = 20.toShort() -public val stringConst: kotlin.String = "abcd" +public val a: kotlin.Int +public val arrayConst: kotlin.Any +public val b: kotlin.Int +public val booleanConst: kotlin.Boolean +public val byteConst: kotlin.Byte +public val charConst: kotlin.Char +public val doubleConst: kotlin.Double +public val enumConst: test.Weapon? +public val floatConst: kotlin.Float +public val intConst: kotlin.Int +public val longConst: kotlin.Long +public val shortConst: kotlin.Short +public val stringConst: kotlin.String public final class Class { public constructor Class() - public final val a: kotlin.Int = 10 - public final val arrayConst: kotlin.Any = {1.toByte(), 2.toByte()} - public final val b: kotlin.Int = 30 - public final val booleanConst: kotlin.Boolean = true - public final val byteConst: kotlin.Byte = 10.toByte() - public final val charConst: kotlin.Char = \u0041 ('A') - public final val doubleConst: kotlin.Double = 3.0.toDouble() - public final val enumConst: test.Weapon? = Weapon.ROCK - public final val floatConst: kotlin.Float = 2.0.toFloat() - public final val intConst: kotlin.Int = 30 - public final val longConst: kotlin.Long = 40.toLong() - public final val shortConst: kotlin.Short = 20.toShort() - public final val stringConst: kotlin.String = "abcd" + public final val a: kotlin.Int + public final val arrayConst: kotlin.Any + public final val b: kotlin.Int + public final val booleanConst: kotlin.Boolean + public final val byteConst: kotlin.Byte + public final val charConst: kotlin.Char + public final val doubleConst: kotlin.Double + public final val enumConst: test.Weapon? + public final val floatConst: kotlin.Float + public final val intConst: kotlin.Int + public final val longConst: kotlin.Long + public final val shortConst: kotlin.Short + public final val stringConst: kotlin.String } public final enum class Weapon : kotlin.Enum<test.Weapon> {
diff --git a/compiler/testData/serialization/builtinsSerializer/nestedClassesAndObjects.txt b/compiler/testData/serialization/builtinsSerializer/nestedClassesAndObjects.txt index be1537f..ddb84a3 100644 --- a/compiler/testData/serialization/builtinsSerializer/nestedClassesAndObjects.txt +++ b/compiler/testData/serialization/builtinsSerializer/nestedClassesAndObjects.txt
@@ -5,17 +5,17 @@ public companion object Companion { private constructor Companion() - public final val stat: kotlin.Int = 250 + public final val stat: kotlin.Int public final class D { public constructor D() - public final val memberFromD: kotlin.Int = 275 + public final val memberFromD: kotlin.Int } } public object ObjA { private constructor ObjA() - public final val memberFromObjA: kotlin.Int = 300 + public final val memberFromObjA: kotlin.Int } public final class classB {
diff --git a/compiler/testData/serialization/builtinsSerializer/propertyAccessorAnnotations.txt b/compiler/testData/serialization/builtinsSerializer/propertyAccessorAnnotations.txt index d9a4fff..137a3c5 100644 --- a/compiler/testData/serialization/builtinsSerializer/propertyAccessorAnnotations.txt +++ b/compiler/testData/serialization/builtinsSerializer/propertyAccessorAnnotations.txt
@@ -1,6 +1,6 @@ package test -@test.Anno(value = "property") public val v1: kotlin.String = "" +@test.Anno(value = "property") public val v1: kotlin.String @get:test.Anno(value = "getter") @set:test.Anno(value = "setter") @setparam:test.Anno(value = "setparam") public var v2: kotlin.String public final annotation class Anno : kotlin.Annotation {