JS/RTTI: fixed is-check on nullable reified parameters
#KT-7016 fixed
#KT-8012 fixed
This commit is contained in:
committed by
Alexey Andreev
parent
e1d10abfa1
commit
0b9c041d0a
+12
-8
@@ -533,23 +533,27 @@ var Kotlin = {};
|
||||
Object.defineProperty(Kotlin.modules, id, {value: declaration});
|
||||
};
|
||||
|
||||
function defineInlineFunction(tag, fun) {
|
||||
Kotlin.defineInlineFunction = function(tag, fun) {
|
||||
return fun;
|
||||
}
|
||||
};
|
||||
|
||||
Kotlin.defineInlineFunction = defineInlineFunction;
|
||||
|
||||
Kotlin.isTypeOf = defineInlineFunction('stdlib.kotlin.isTypeOf', function (type) {
|
||||
Kotlin.isTypeOf = function(type) {
|
||||
return function (object) {
|
||||
return typeof object === type;
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
Kotlin.isInstanceOf = defineInlineFunction('stdlib.kotlin.isInstanceOf', function (klass) {
|
||||
Kotlin.isInstanceOf = function (klass) {
|
||||
return function (object) {
|
||||
return Kotlin.isType(object, klass);
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
Kotlin.orNull = function (fn) {
|
||||
return function (object) {
|
||||
return object == null || fn(object);
|
||||
}
|
||||
};
|
||||
|
||||
Kotlin.kotlinModuleMetadata = function (abiVersion, moduleName, data) {
|
||||
};
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
package foo
|
||||
|
||||
inline fun <reified T> isInstance(x: Any): Boolean =
|
||||
x is T
|
||||
inline fun <reified T> isInstance(x: Any?): Boolean =
|
||||
x is T
|
||||
|
||||
@@ -7,5 +7,9 @@ fun box(): String {
|
||||
assertEquals(true, isInstance<Boolean>(false))
|
||||
assertEquals(false, isInstance<Boolean>("true"))
|
||||
|
||||
assertEquals(true, isInstance<Boolean?>(true), "isInstance<Boolean?>(true)")
|
||||
assertEquals(true, isInstance<Boolean?>(null), "isInstance<Boolean?>(null)")
|
||||
assertEquals(false, isInstance<Boolean?>("true"), "isInstance<Boolean?>(\"true\")")
|
||||
|
||||
return "OK"
|
||||
}
|
||||
@@ -7,5 +7,9 @@ fun box(): String {
|
||||
assertEquals(false, isInstance<Char>(""))
|
||||
assertEquals(false, isInstance<Char>("cc"))
|
||||
|
||||
assertEquals(true, isInstance<Char?>('c'), "isInstance<Char?>('c')")
|
||||
assertEquals(true, isInstance<Char?>(null), "isInstance<Char?>(null)")
|
||||
assertEquals(false, isInstance<Char?>("cc"), "isInstance<Char?>(\"cc\")")
|
||||
|
||||
return "OK"
|
||||
}
|
||||
@@ -17,5 +17,9 @@ fun box(): String {
|
||||
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"
|
||||
}
|
||||
@@ -15,5 +15,9 @@ fun box(): String {
|
||||
assertEquals(true, isInstance<Number>(0.0))
|
||||
assertEquals(false, isInstance<Number>("0"))
|
||||
|
||||
assertEquals(true, isInstance<Int?>(0), "isInstance<Int?>(0)")
|
||||
assertEquals(true, isInstance<Int?>(null), "isInstance<Int?>(null)")
|
||||
assertEquals(false, isInstance<Int?>(true), "isInstance<Int?>(true)")
|
||||
|
||||
return "OK"
|
||||
}
|
||||
@@ -6,5 +6,9 @@ fun box(): String {
|
||||
assertEquals(true, isInstance<String>(""))
|
||||
assertEquals(true, isInstance<String>("a"))
|
||||
|
||||
assertEquals(true, isInstance<String?>(""), "isInstance<String?>(\"\")")
|
||||
assertEquals(true, isInstance<String?>(null), "isInstance<String?>(null)")
|
||||
assertEquals(false, isInstance<String?>(10), "isInstance<String?>(10)")
|
||||
|
||||
return "OK"
|
||||
}
|
||||
Reference in New Issue
Block a user