Files
kotlin-fork/js/js.translator/testData/box/reflection/kClassIsInstance.kt
T
Dmitry Petrov 33ed98a0d3 Update typing rules for class literal expressions.
C::class : KClass<C>
expr: T => expr::class : KClass<out T>

NB: this means Obj::class : KClass<out Obj> for object Obj.
2016-12-19 10:41:49 +03:00

23 lines
518 B
Kotlin
Vendored

package foo
import kotlin.reflect.KClass
fun check(k: KClass<*>, instance: Any, nonInstance: Any) {
assertTrue(k.isInstance(instance))
assertFalse(k.isInstance(nonInstance))
assertFalse(k.isInstance(null))
}
fun box(): String {
check(A::class, A(), O)
check(A::class, B(), O)
check(O::class, O, object {})
check(I::class, object : I {}, object {})
check(E::class, E.X, A())
check(E::class, E.Y, B())
check(E::class, E.Z, O)
check(E.Y::class, E.Y, E.X)
return "OK"
}