Do not create primary constructor for enum entry synthetic class

The change in DescriptorSerializer is needed so that serialized protos
of enum entry classes which are resolved in sources
(LazyClassDescriptor) and are deserialized from binaries
(EnumEntrySyntheticClassDescriptor) are the same. There are tests on
incremental compilation in JS that check that the serialized proto is
exactly the same after rebuild and after an incremental build.

 #KT-22048 Fixed
This commit is contained in:
Alexander Udalov
2018-01-04 19:06:56 +01:00
parent b52b07ec79
commit 17fc41e0f9
8 changed files with 55 additions and 10 deletions
@@ -0,0 +1,24 @@
// IGNORE_BACKEND: JS_IR, JS, NATIVE
// WITH_REFLECT
import kotlin.test.assertEquals
enum class TestEnum(val id: String? = null) {
ENUM1(id = "enum1_id"),
ENUM2(id = "enum2_id") {
override fun test() {
ENUM1.test()
}
};
open fun test() {
}
}
fun box(): String {
assertEquals(listOf("fun <init>(kotlin.String?): TestEnum"), TestEnum.ENUM1::class.constructors.map { it.toString() })
assertEquals(listOf(), TestEnum.ENUM2::class.constructors.map { it.toString() })
return "OK"
}