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:
+1
-1
@@ -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))
|
||||
}
|
||||
|
||||
+1
@@ -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"
|
||||
}
|
||||
|
||||
+3
-1
@@ -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()
|
||||
|
||||
+1
-1
@@ -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()
|
||||
|
||||
Reference in New Issue
Block a user