| // FILE: lib.kt |
| package foo |
| |
| inline fun <reified T> isInstance(x: Any?): Boolean = |
| x is T |
| |
| // FILE: main.kt |
| package foo |
| import kotlin.test.* |
| |
| // CHECK_NOT_CALLED: isInstance |
| |
| interface A |
| interface B |
| |
| open class C : A, B |
| |
| class D : C() |
| |
| fun box(): String { |
| assertEquals(false, isInstance<A>(0)) |
| assertEquals(false, isInstance<A>("")) |
| assertEquals(true, isInstance<A>(C())) |
| assertEquals(true, isInstance<A>(D())) |
| assertEquals(true, isInstance<D>(D())) |
| assertEquals(true, isInstance<C>(D())) |
| |
| assertEquals(true, isInstance<D?>(D()), "isInstance<D?>(D())") |
| assertEquals(true, isInstance<D?>(null), "isInstance<D?>(null)") |
| assertEquals(false, isInstance<D?>(C()), "isInstance<D?>(C())") |
| |
| return "OK" |
| } |