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 {