blob: 5aa267f96ce4a60b6e9593a5aa65b20b8e30a3f7 [file]
// FILE: lib.kt
package foo
class A
class B
class C
inline fun <reified T, reified R> test(x: Any): String = test1<R, T>(x)
inline fun <reified R, reified T> test1(x: Any): String =
when (x) {
is R -> "R"
is T -> "T"
else -> "Unknown"
}
// FILE: main.kt
package foo
import kotlin.test.*
fun box(): String {
assertEquals("T", test<A, B>(A()), "test<T, R>(T())")
assertEquals("R", test<A, B>(B()), "test<T, R>(R())")
assertEquals("Unknown", test<A, B>(C()), "test<T, R>(L())")
return "OK"
}