KJS: allow to use KClass::isInstance; implement isInstance in KClassImpl
This commit is contained in:
@@ -0,0 +1,22 @@
|
||||
package foo
|
||||
|
||||
import kotlin.reflect.KClass
|
||||
|
||||
fun <A : Any, B : A> check(k: KClass<A>, instance: B, 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"
|
||||
}
|
||||
@@ -12,6 +12,7 @@ fun testWithInstance() {
|
||||
assertEquals("A", A()::class.simpleName)
|
||||
assertEquals("B", B()::class.simpleName)
|
||||
assertEquals("O", (O)::class.simpleName)
|
||||
assertEquals("Q", R()::class.simpleName)
|
||||
assertEquals("E", E.X::class.simpleName)
|
||||
assertEquals("Y", E.Y::class.simpleName)
|
||||
// TODO uncomment after KT-13338 is fixed
|
||||
@@ -26,6 +27,7 @@ fun testWithClassReference() {
|
||||
assertEquals("B", B::class.simpleName)
|
||||
assertEquals("O", O::class.simpleName)
|
||||
assertEquals("I", I::class.simpleName)
|
||||
assertEquals("Q", R::class.simpleName)
|
||||
assertEquals("E", E::class.simpleName)
|
||||
assertEquals("undefined", foo.undefined::class.simpleName)
|
||||
assertEquals("Nested", Outer.Nested::class.simpleName)
|
||||
|
||||
@@ -19,6 +19,7 @@ fun box(): String {
|
||||
check(B::class, jsClassbyName("B"))
|
||||
check(O::class, jsClassbyName("O").constructor)
|
||||
check(I::class, jsClassbyName("I"))
|
||||
check(R::class, jsClassbyName("Q"))
|
||||
check(E::class, jsClassbyName("E"))
|
||||
check(E.X::class, jsClassbyName("E").X.constructor)
|
||||
check(E.Y::class, jsClassbyName("E").Y.constructor)
|
||||
|
||||
Reference in New Issue
Block a user