28 lines
442 B
Kotlin
Vendored
28 lines
442 B
Kotlin
Vendored
// WITH_REFLECT
|
|
// TARGET_BACKEND: JVM
|
|
// FILE: 1.kt
|
|
package test
|
|
|
|
interface Call<T> {
|
|
fun call(): T
|
|
}
|
|
|
|
public inline fun <reified T: Any> Any.inlineMeIfYouCan() : () -> Call<T> = {
|
|
object : Call<T> {
|
|
override fun call() = T::class.java.newInstance()
|
|
}
|
|
}
|
|
|
|
// FILE: 2.kt
|
|
|
|
import test.*
|
|
|
|
public class A()
|
|
|
|
fun box(): String {
|
|
val s = "yo".inlineMeIfYouCan<A>()().call()
|
|
if (s !is A) return "fail"
|
|
|
|
return "OK"
|
|
}
|