Don't generate hash in sam wrapper class name

#KT-17091 Fixed
This commit is contained in:
Mikhael Bogdanov
2018-02-06 15:26:52 +01:00
parent ba5cc65792
commit 0954d1ab1b
21 changed files with 286 additions and 27 deletions
+30
View File
@@ -0,0 +1,30 @@
// TARGET_BACKEND: JVM
// WITH_RUNTIME
// FILE: Foo.kt
class A2 {
fun doWork(job: () -> Unit) {
Runnable(job)
}
}
// FILE: kt17091.kt
typealias Z = String
class A {
fun doWork(job: () -> Unit) {
java.lang.Runnable(job).run()
}
}
fun box(): String {
var result = "fail"
A().doWork { result = "OK" }
if (java.lang.Class.forName("Kt17091Kt\$sam\$java_lang_Runnable$0") == null) return "fail: can't find sam wrapper"
if (java.lang.Class.forName("A2\$sam\$java_lang_Runnable$0") == null) return "fail 2: can't find sam wrapper"
return result
}
+37
View File
@@ -0,0 +1,37 @@
// TARGET_BACKEND: JVM
// WITH_RUNTIME
// FILE: Foo.kt
@file:JvmName("testXX")
package test
class A2 {
fun doWork(job: () -> Unit) {
Runnable(job)
}
}
// FILE: kt17091_2.kt
@file:JvmMultifileClass
@file:JvmName("testX")
package test
typealias Z = String
class A {
fun doWork(job: () -> Unit) {
Runnable(job).run()
}
}
fun box(): String {
var result = "fail"
A().doWork { result = "OK" }
if (java.lang.Class.forName("test.testX__Kt17091_2Kt\$sam\$java_lang_Runnable$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 result
}
+28
View File
@@ -0,0 +1,28 @@
// TARGET_BACKEND: JVM
// WITH_RUNTIME
// FILE: Foo.kt
@file:JvmMultifileClass
@file:JvmName("testX")
package test
class A2 {
fun doWork(job: () -> Unit) {
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)
}
@@ -0,0 +1,18 @@
// FILE: 1.kt
// FULL_JDK
package test
inline fun foo(value: String, crossinline s: () -> String): String {
val x = { value }
return java.util.concurrent.Callable(x).call() + { s() }()
}
// FILE: 2.kt
import test.*
fun box(): String {
return foo("O") { "K" }
}
@@ -1,14 +1,14 @@
@kotlin.Metadata
final class test/SamAdapterAndInlinedOneKt$sam$Runnable$HASH {
public final class test/SamAdapterAndInlinedOneKt$sam$i$java_lang_Runnable$0 {
private synthetic final field function: kotlin.jvm.functions.Function0
method <init>(p0: kotlin.jvm.functions.Function0): void
public method <init>(p0: kotlin.jvm.functions.Function0): void
public synthetic final method run(): void
}
@kotlin.Metadata
public final class test/SamAdapterAndInlinedOneKt$sam$Runnable$i$HASH {
final class test/SamAdapterAndInlinedOneKt$sam$java_lang_Runnable$0 {
private synthetic final field function: kotlin.jvm.functions.Function0
public method <init>(p0: kotlin.jvm.functions.Function0): void
method <init>(p0: kotlin.jvm.functions.Function0): void
public synthetic final method run(): void
}