Do not serialize constructors for anonymous objects

The only client of this data is reflection, and since anonymous objects
do not have constructors in the source code, they shouldn't in
reflection as well

 #KT-20442 Fixed
This commit is contained in:
Alexander Udalov
2018-01-05 16:21:23 +01:00
parent 17fc41e0f9
commit 50c515deca
7 changed files with 8 additions and 6 deletions
@@ -89,7 +89,7 @@ class DescriptorSerializer private constructor(
}
}
if (classDescriptor.kind != ClassKind.ENUM_ENTRY) {
if (!DescriptorUtils.isAnonymousObject(classDescriptor) && classDescriptor.kind != ClassKind.ENUM_ENTRY) {
for (descriptor in classDescriptor.constructors) {
builder.addConstructor(constructorProto(descriptor))
}
@@ -18,6 +18,7 @@ fun box(): String {
assertTrue(Interface::class.constructors.isEmpty())
assertTrue(Obj::class.constructors.isEmpty())
assertTrue(C.Companion::class.constructors.isEmpty())
assertTrue(object {}::class.constructors.isEmpty())
return "OK"
}
@@ -49,11 +49,13 @@ fun box(): String {
val p4 = TwoSecondaries::class.primaryConstructor
assertNull(p4)
assertNotNull(En::class.primaryConstructor) // TODO: maybe primaryConstructor should be null for enum classes
assertNotNull(En::class.primaryConstructor)
assertNull(I::class.primaryConstructor)
assertNull(O::class.primaryConstructor)
assertNull(C.Companion::class.primaryConstructor)
assertNull(object {}::class.primaryConstructor)
return "OK"
}
@@ -1,4 +1,3 @@
local final class `AnonymousObjectKt$main$1` : java.lang.Runnable
public constructor `AnonymousObjectKt$main$1`()
public open override /*1*/ fun run(): kotlin.Unit
@@ -32,7 +32,7 @@ class JsMetadataVersion(vararg numbers: Int) : BinaryVersion(*numbers) {
companion object {
@JvmField
val INSTANCE = JsMetadataVersion(1, 2, 2)
val INSTANCE = JsMetadataVersion(1, 2, 3)
@JvmField
val INVALID_VERSION = JsMetadataVersion()
@@ -18,7 +18,7 @@ class JvmMetadataVersion(vararg numbers: Int) : BinaryVersion(*numbers) {
companion object {
@JvmField
val INSTANCE = JvmMetadataVersion(1, 1, 10)
val INSTANCE = JvmMetadataVersion(1, 1, 11)
@JvmField
val INVALID_VERSION = JvmMetadataVersion()
@@ -18,7 +18,7 @@ class BuiltInsBinaryVersion(vararg numbers: Int) : BinaryVersion(*numbers) {
companion object {
@JvmField
val INSTANCE = BuiltInsBinaryVersion(1, 0, 3)
val INSTANCE = BuiltInsBinaryVersion(1, 0, 4)
@JvmField
val INVALID_VERSION = BuiltInsBinaryVersion()