| // FILE: lib.kt |
| package foo |
| |
| // CHECK_CALLED: doRun |
| // CHECK_NOT_CALLED: test |
| |
| class X |
| class Y |
| |
| fun <R> doRun(fn: ()->R): R = fn() |
| |
| inline fun <reified A, reified B> test(x: Any, y: Any): Boolean = |
| doRun { |
| val isA = null |
| x is A |
| } |
| && doRun { |
| val result = y is B |
| val isB = null |
| result |
| } |
| |
| // FILE: main.kt |
| package foo |
| import kotlin.test.* |
| // CHECK_CALLED: doRun |
| // CHECK_NOT_CALLED: test |
| |
| fun box(): String { |
| val x = X() |
| val y = Y() |
| |
| assertEquals(true, test<X, Y>(x, y), "test<X, Y>(x, y)") |
| assertEquals(false, test<X, Y>(x, x), "test<X, Y>(x, x)") |
| assertEquals(false, test<X, Y>(y, x), "test<X, Y>(y, x)") |
| assertEquals(false, test<X, Y>(y, y), "test<X, Y>(y, y)") |
| |
| return "OK" |
| } |