[FIR] Fix naming of local classes when serializing metadata
^KT-63655: Fixed ^KT-63901: Fixed ^KT-63988: Fixed
This commit is contained in:
committed by
Space Team
parent
78876b32e9
commit
54858c2118
-9
@@ -1,9 +0,0 @@
|
||||
MODULE main
|
||||
CLASS Outer$foo$Local.class
|
||||
CLASS METADATA
|
||||
PROPERTY getObj()LOuter$foo$Local$obj$1;
|
||||
Property: class.metadata.property.returnType
|
||||
K1
|
||||
.Outer$foo$Local$obj$1
|
||||
K2
|
||||
.Outer$foo$Local.<no name provided>
|
||||
@@ -1,5 +1,3 @@
|
||||
// JVM_ABI_K1_K2_DIFF: KT-63868
|
||||
|
||||
fun <R> run(block: () -> R) = block()
|
||||
inline fun <R> inlineRun(block: () -> R) = block()
|
||||
|
||||
|
||||
Vendored
-9
@@ -1,9 +0,0 @@
|
||||
MODULE lib
|
||||
CLASS A.class
|
||||
CLASS METADATA
|
||||
PROPERTY x
|
||||
Property: class.metadata.property.returnType
|
||||
K1
|
||||
.A$x$1
|
||||
K2
|
||||
.A.<no name provided>
|
||||
-1
@@ -1,6 +1,5 @@
|
||||
// TARGET_BACKEND: JVM
|
||||
// MODULE: lib
|
||||
// JVM_ABI_K1_K2_DIFF: KT-63868
|
||||
|
||||
// FILE: A.kt
|
||||
abstract class A {
|
||||
|
||||
-9
@@ -1,9 +0,0 @@
|
||||
MODULE main
|
||||
CLASS ObjectExtendsInnerOfLocalVarargAndDefaultKt$box$Local.class
|
||||
CLASS METADATA
|
||||
PROPERTY getObj()LObjectExtendsInnerOfLocalVarargAndDefaultKt$box$Local$obj$1;
|
||||
Property: class.metadata.property.returnType
|
||||
K1
|
||||
.ObjectExtendsInnerOfLocalVarargAndDefaultKt$box$Local$obj$1
|
||||
K2
|
||||
.ObjectExtendsInnerOfLocalVarargAndDefaultKt$box$Local.<no name provided>
|
||||
-1
@@ -1,4 +1,3 @@
|
||||
// JVM_ABI_K1_K2_DIFF: KT-63655
|
||||
fun box(): String {
|
||||
val capture = "oh"
|
||||
|
||||
|
||||
-9
@@ -1,9 +0,0 @@
|
||||
MODULE main
|
||||
CLASS ObjectExtendsInnerOfLocalWithCaptureKt$box$Local.class
|
||||
CLASS METADATA
|
||||
PROPERTY getObj()LObjectExtendsInnerOfLocalWithCaptureKt$box$Local$obj$1;
|
||||
Property: class.metadata.property.returnType
|
||||
K1
|
||||
.ObjectExtendsInnerOfLocalWithCaptureKt$box$Local$obj$1
|
||||
K2
|
||||
.ObjectExtendsInnerOfLocalWithCaptureKt$box$Local.<no name provided>
|
||||
-1
@@ -1,4 +1,3 @@
|
||||
// JVM_ABI_K1_K2_DIFF: KT-63655
|
||||
fun box(): String {
|
||||
class Local {
|
||||
open inner class Inner(val s: String) {
|
||||
|
||||
@@ -1,9 +0,0 @@
|
||||
MODULE main
|
||||
CLASS A.class
|
||||
CLASS METADATA
|
||||
PROPERTY b
|
||||
Property: class.metadata.property.returnType
|
||||
K1
|
||||
.A$b$1
|
||||
K2
|
||||
.A.<no name provided>
|
||||
@@ -1,6 +1,5 @@
|
||||
// TARGET_BACKEND: JVM
|
||||
// JVM_TARGET: 1.8
|
||||
// JVM_ABI_K1_K2_DIFF: KT-63655
|
||||
|
||||
// FILE: kt43217.kt
|
||||
|
||||
|
||||
-8
@@ -1,8 +0,0 @@
|
||||
MODULE main
|
||||
CLASS A$o$1.class
|
||||
CLASS METADATA
|
||||
Property: class.metadata.superTypes
|
||||
K1
|
||||
[.A$B]
|
||||
K2
|
||||
[.A.B]
|
||||
@@ -1,5 +1,3 @@
|
||||
// JVM_ABI_K1_K2_DIFF: KT-63901
|
||||
|
||||
class A {
|
||||
var a: String = "Fail"
|
||||
|
||||
|
||||
Vendored
-9
@@ -1,9 +0,0 @@
|
||||
MODULE main
|
||||
CLASS CompoundAssignmentToPropertyWithQualifierKt$box$c$1.class
|
||||
CLASS METADATA
|
||||
PROPERTY getB()LCompoundAssignmentToPropertyWithQualifierKt$box$c$1$b$1;
|
||||
Property: class.metadata.property.returnType
|
||||
K1
|
||||
.CompoundAssignmentToPropertyWithQualifierKt$box$c$1$b$1
|
||||
K2
|
||||
.CompoundAssignmentToPropertyWithQualifierKt$box$c$1.<no name provided>
|
||||
-2
@@ -1,5 +1,3 @@
|
||||
// JVM_ABI_K1_K2_DIFF: KT-63655
|
||||
|
||||
var log = ""
|
||||
|
||||
class A(p: String) {
|
||||
|
||||
@@ -7,12 +7,6 @@ MODULE main
|
||||
java/util/ArrayList<kotlin/String> /* = kotlin/collections/ArrayList^<kotlin/String> */
|
||||
K2
|
||||
java/util/ArrayList<kotlin/String>
|
||||
PROPERTY workerThread
|
||||
Property: class.metadata.property.returnType
|
||||
K1
|
||||
.SomeClass$workerThread$1
|
||||
K2
|
||||
.SomeClass.<no name provided>
|
||||
CLASS SomeClass$Inner.class
|
||||
CLASS METADATA
|
||||
PROPERTY getCopy()Ljava/util/ArrayList;
|
||||
|
||||
+1
-1
@@ -1,5 +1,5 @@
|
||||
// TARGET_BACKEND: JVM
|
||||
// JVM_ABI_K1_K2_DIFF: KT-63655, KT-63864
|
||||
// JVM_ABI_K1_K2_DIFF: KT-63864
|
||||
public object SomeObject {
|
||||
private val workerThread = object : Thread() {
|
||||
override fun run() {
|
||||
|
||||
-9
@@ -1,9 +0,0 @@
|
||||
MODULE main
|
||||
CLASS ObjectInLocalAnonymousObjectKt$box$foo$1.class
|
||||
CLASS METADATA
|
||||
PROPERTY getBar()LObjectInLocalAnonymousObjectKt$box$foo$1$bar$1;
|
||||
Property: class.metadata.property.returnType
|
||||
K1
|
||||
.ObjectInLocalAnonymousObjectKt$box$foo$1$bar$1
|
||||
K2
|
||||
.ObjectInLocalAnonymousObjectKt$box$foo$1.<no name provided>
|
||||
@@ -1,4 +1,3 @@
|
||||
// JVM_ABI_K1_K2_DIFF: KT-63655
|
||||
fun box(): String {
|
||||
var boo = "OK"
|
||||
var foo = object {
|
||||
|
||||
@@ -1,9 +0,0 @@
|
||||
MODULE main
|
||||
CLASS C.class
|
||||
CLASS METADATA
|
||||
PROPERTY localObject
|
||||
Property: class.metadata.property.returnType
|
||||
K1
|
||||
.C$localObject$1
|
||||
K2
|
||||
.C.<no name provided>
|
||||
@@ -1,4 +1,3 @@
|
||||
// JVM_ABI_K1_K2_DIFF: KT-63655
|
||||
class C {
|
||||
|
||||
val s = "OK"
|
||||
|
||||
-9
@@ -1,9 +0,0 @@
|
||||
MODULE main
|
||||
CLASS Outer.class
|
||||
CLASS METADATA
|
||||
PROPERTY obj
|
||||
Property: class.metadata.property.returnType
|
||||
K1
|
||||
.Outer$obj$1
|
||||
K2
|
||||
.Outer.<no name provided>
|
||||
@@ -1,5 +1,4 @@
|
||||
// KT-44054
|
||||
// JVM_ABI_K1_K2_DIFF: KT-63655
|
||||
enum class Enum {
|
||||
Entry1,
|
||||
Entry2
|
||||
|
||||
@@ -1,15 +0,0 @@
|
||||
MODULE main
|
||||
CLASS Outer.class
|
||||
CLASS METADATA
|
||||
PROPERTY obj1
|
||||
Property: class.metadata.property.returnType
|
||||
K1
|
||||
.Outer$obj1$1
|
||||
K2
|
||||
.Outer.<no name provided>
|
||||
PROPERTY obj2
|
||||
Property: class.metadata.property.returnType
|
||||
K1
|
||||
.Outer$obj2$1
|
||||
K2
|
||||
.Outer.<no name provided>
|
||||
@@ -1,6 +1,4 @@
|
||||
// KT-44050
|
||||
// JVM_ABI_K1_K2_DIFF: KT-63655
|
||||
|
||||
enum class Enum {
|
||||
Entry1() {
|
||||
fun bogus() = 42
|
||||
|
||||
@@ -1,9 +0,0 @@
|
||||
MODULE main
|
||||
CLASS InvokeKt$box$o$1.class
|
||||
CLASS METADATA
|
||||
PROPERTY getP()LInvokeKt$box$o$1$p$1;
|
||||
Property: class.metadata.property.returnType
|
||||
K1
|
||||
.InvokeKt$box$o$1$p$1
|
||||
K2
|
||||
.InvokeKt$box$o$1.<no name provided>
|
||||
@@ -3,7 +3,6 @@
|
||||
// FULL_JDK
|
||||
// SKIP_JDK6
|
||||
// WITH_STDLIB
|
||||
// JVM_ABI_K1_K2_DIFF: KT-63655
|
||||
|
||||
import java.lang.invoke.MethodHandles
|
||||
import java.lang.invoke.MethodType
|
||||
|
||||
@@ -0,0 +1,12 @@
|
||||
// TARGET_BACKEND: JVM_IR
|
||||
// WITH_REFLECT
|
||||
|
||||
import kotlin.reflect.full.memberProperties
|
||||
|
||||
class A {
|
||||
val prop = object {
|
||||
val nestedProp = object {}
|
||||
}
|
||||
}
|
||||
|
||||
fun box() = if (A().prop::class.memberProperties.size == 1) "OK" else "Fail"
|
||||
+15
@@ -0,0 +1,15 @@
|
||||
MODULE main
|
||||
CLASS LocalNestedClassesKt$foo1$X$Y.class
|
||||
CLASS METADATA
|
||||
Property: class.metadata.companionObject
|
||||
K1
|
||||
null
|
||||
K2
|
||||
Z
|
||||
CLASS LocalNestedClassesKt$foo2$X$Y.class
|
||||
CLASS METADATA
|
||||
Property: class.metadata.companionObject
|
||||
K1
|
||||
null
|
||||
K2
|
||||
Companion
|
||||
@@ -0,0 +1,144 @@
|
||||
// TARGET_BACKEND: JVM_IR
|
||||
// WITH_REFLECT
|
||||
// JVM_ABI_K1_K2_DIFF: K2 names companion objects in metadata correctly
|
||||
|
||||
import kotlin.reflect.KType
|
||||
import kotlin.reflect.full.memberProperties
|
||||
|
||||
val KType.str get() = classifier.toString()
|
||||
|
||||
class A {
|
||||
fun foo(): String {
|
||||
class Nested {
|
||||
inner class Inner {
|
||||
val prop = this
|
||||
}
|
||||
}
|
||||
return Nested().Inner()::class.memberProperties.iterator().next().returnType.str
|
||||
}
|
||||
}
|
||||
|
||||
fun foo1(): String {
|
||||
class X {
|
||||
inner class Y {
|
||||
companion object Z
|
||||
|
||||
val prop = Z
|
||||
}
|
||||
}
|
||||
return X.Y::class.memberProperties.iterator().next().returnType.str
|
||||
}
|
||||
|
||||
fun foo2(): String {
|
||||
class X {
|
||||
inner class Y {
|
||||
companion object
|
||||
|
||||
val prop = Companion
|
||||
}
|
||||
}
|
||||
return X.Y::class.memberProperties.iterator().next().returnType.str
|
||||
}
|
||||
|
||||
fun foo3(): String {
|
||||
class X {
|
||||
inner class Y {
|
||||
val prop = object {}
|
||||
}
|
||||
}
|
||||
return X.Y::class.memberProperties.iterator().next().returnType.str
|
||||
}
|
||||
|
||||
fun foo4(): String {
|
||||
var res = ""
|
||||
|
||||
class A {
|
||||
inner class B {
|
||||
inner class C {
|
||||
fun bar() {
|
||||
class D {
|
||||
val prop = this
|
||||
}
|
||||
res = D::class.memberProperties.iterator().next().returnType.str
|
||||
}
|
||||
|
||||
init {
|
||||
bar()
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
A().B().C()
|
||||
return res
|
||||
}
|
||||
|
||||
fun foo5(): String {
|
||||
var res = ""
|
||||
object {
|
||||
fun bar() {
|
||||
return object {
|
||||
fun foo() {
|
||||
class A {
|
||||
inner class B {
|
||||
val prop = this
|
||||
init {
|
||||
res = prop::class.memberProperties.iterator().next().returnType.str
|
||||
}
|
||||
}
|
||||
}
|
||||
A().B()
|
||||
}
|
||||
}.foo()
|
||||
}
|
||||
}.bar()
|
||||
return res
|
||||
}
|
||||
|
||||
fun foo6(): String {
|
||||
var res = ""
|
||||
object {
|
||||
fun bar() {
|
||||
class A {
|
||||
inner class B {
|
||||
inner class C {
|
||||
val prop = this
|
||||
|
||||
init {
|
||||
res = prop::class.memberProperties.iterator().next().returnType.str
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
A().B().C()
|
||||
}
|
||||
}.bar()
|
||||
return res
|
||||
}
|
||||
|
||||
fun foo7(): String {
|
||||
var res = ""
|
||||
val x = object {
|
||||
val y = object {
|
||||
val z = object {
|
||||
val y = this
|
||||
init {
|
||||
res = this::class.memberProperties.iterator().next().returnType.str
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return res
|
||||
}
|
||||
|
||||
fun box(): String {
|
||||
if (A().foo() != "class A\$foo\$Nested\$Inner") return "Fail 1"
|
||||
if (foo1() != "class LocalNestedClassesKt\$foo1\$X\$Y\$Z") return "Fail 2"
|
||||
if (foo2() != "class LocalNestedClassesKt\$foo2\$X\$Y\$Companion") return "Fail 3"
|
||||
if (foo3() != "class LocalNestedClassesKt\$foo3\$X\$Y\$prop\$1") return "Fail 4"
|
||||
if (foo4() != "class LocalNestedClassesKt\$foo4\$A\$B\$C\$bar\$D") return "Fail 5"
|
||||
if (foo5() != "class LocalNestedClassesKt\$foo5\$1\$bar\$1\$foo\$A\$B") return "Fail 6"
|
||||
if (foo6() != "class LocalNestedClassesKt\$foo6\$1\$bar\$A\$B\$C") return "Fail 7"
|
||||
if (foo7() != "class LocalNestedClassesKt\$foo7\$x\$1\$y\$1\$z\$1") return "Fail 8"
|
||||
|
||||
return "OK"
|
||||
}
|
||||
@@ -1,9 +0,0 @@
|
||||
MODULE main
|
||||
CLASS One.class
|
||||
CLASS METADATA
|
||||
PROPERTY getA1()[LOne$a1$1;
|
||||
Property: class.metadata.property.returnType
|
||||
K1
|
||||
kotlin/Array<.One$a1$1>
|
||||
K2
|
||||
kotlin/Array<.One.<no name provided>>
|
||||
@@ -2,7 +2,6 @@
|
||||
|
||||
// In light analysis mode, anonymous object type is approximated to the supertype, so `fy` is unresolved.
|
||||
// IGNORE_LIGHT_ANALYSIS
|
||||
// JVM_ABI_K1_K2_DIFF: KT-63655
|
||||
|
||||
private class One {
|
||||
val a1 = arrayOf(
|
||||
|
||||
-9
@@ -1,9 +0,0 @@
|
||||
MODULE main
|
||||
CLASS ObjectExtendsLocalInnerKt$box$Local.class
|
||||
CLASS METADATA
|
||||
PROPERTY getObj()LObjectExtendsLocalInnerKt$box$Local$obj$1;
|
||||
Property: class.metadata.property.returnType
|
||||
K1
|
||||
.ObjectExtendsLocalInnerKt$box$Local$obj$1
|
||||
K2
|
||||
.ObjectExtendsLocalInnerKt$box$Local.<no name provided>
|
||||
-1
@@ -1,4 +1,3 @@
|
||||
// JVM_ABI_K1_K2_DIFF: KT-63655
|
||||
fun box(): String {
|
||||
val capture = "O"
|
||||
|
||||
|
||||
Reference in New Issue
Block a user