blob: 846654d315a452dc38209df7441cfd868c0fe426 [file]
// 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"
}