Properly calculate outermost parent class for sam wrapper
#KT-22906 Fixed
This commit is contained in:
+36
@@ -0,0 +1,36 @@
|
||||
// TARGET_BACKEND: JVM
|
||||
// WITH_RUNTIME
|
||||
// FILE: Foo.kt
|
||||
@file:JvmMultifileClass
|
||||
@file:JvmName("testX")
|
||||
package test
|
||||
|
||||
class A2 {
|
||||
fun doWork(job: () -> Unit) {
|
||||
Runnable(job)
|
||||
Runnable(job)
|
||||
Runnable(job)
|
||||
}
|
||||
|
||||
fun foo(job: () -> Unit) {
|
||||
Runnable(job)
|
||||
Runnable(job)
|
||||
Runnable(job)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// FILE: kt17091_3.kt
|
||||
|
||||
fun box(): String {
|
||||
if (java.lang.Class.forName("Kt17091_3Kt\$sam\$java_util_concurrent_Callable$0") == null) return "fail: can't find sam wrapper"
|
||||
|
||||
if (java.lang.Class.forName("test.A2\$sam\$java_lang_Runnable$0") == null) return "fail 2: can't find sam wrapper"
|
||||
|
||||
return A().foo().call()
|
||||
}
|
||||
|
||||
class A {
|
||||
val f = {"OK"}
|
||||
fun foo() = java.util.concurrent.Callable(f)
|
||||
}
|
||||
+26
@@ -0,0 +1,26 @@
|
||||
// TARGET_BACKEND: JVM
|
||||
// WITH_RUNTIME
|
||||
// FILE: kt22906_1.kt
|
||||
package test
|
||||
|
||||
class C {
|
||||
fun startTemplate(): String {
|
||||
val y = object {
|
||||
fun foo(): String {
|
||||
val job = { "OK" }
|
||||
return java.util.concurrent.Callable(job).call()
|
||||
}
|
||||
|
||||
}
|
||||
return y.foo()
|
||||
}
|
||||
}
|
||||
|
||||
// FILE: kt22906_2.kt
|
||||
import test.*
|
||||
|
||||
fun box(): String {
|
||||
if (java.lang.Class.forName("test.C\$sam\$java_util_concurrent_Callable\$0") == null) return "fail: can't find sam wrapper"
|
||||
|
||||
return C().startTemplate()
|
||||
}
|
||||
+36
@@ -0,0 +1,36 @@
|
||||
// TARGET_BACKEND: JVM
|
||||
// WITH_RUNTIME
|
||||
// FILE: kt22906_1.kt
|
||||
package test
|
||||
|
||||
class C {
|
||||
fun startTemplate(): String {
|
||||
val y = object {
|
||||
fun foo(): String {
|
||||
val job = { "OK" }
|
||||
return java.util.concurrent.Callable(job).call()
|
||||
}
|
||||
|
||||
}
|
||||
return y.foo()
|
||||
}
|
||||
|
||||
fun foo() {
|
||||
val y = object {
|
||||
fun foo(): String {
|
||||
val job = { "OK2" }
|
||||
return java.util.concurrent.Callable(job).call()
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// FILE: kt22906_2.kt
|
||||
import test.*
|
||||
|
||||
fun box(): String {
|
||||
if (java.lang.Class.forName("test.C\$sam\$java_util_concurrent_Callable\$0") == null) return "fail: can't find sam wrapper"
|
||||
|
||||
return C().startTemplate()
|
||||
}
|
||||
Reference in New Issue
Block a user