[JS IR BE] Support cast to native interface

This commit is contained in:
Svyatoslav Kuzmich
2019-02-12 21:29:47 +03:00
parent 4a3476a87c
commit 74c8f54fc8
3 changed files with 7 additions and 3 deletions
@@ -218,7 +218,13 @@ class TypeOperatorLowering(val context: JsIrBackendContext) : FileLoweringPass {
toType.isArray() -> generateGenericArrayCheck(argument)
toType.isPrimitiveArray() -> generatePrimitiveArrayTypeCheck(argument, toType)
toType.isTypeParameter() -> generateTypeCheckWithTypeParameter(argument, toType)
toType.isInterface() -> generateInterfaceCheck(argument, toType)
toType.isInterface() -> {
if ((toType.classifierOrFail.owner as IrClass).isEffectivelyExternal()) {
generateIsObjectCheck(argument)
} else {
generateInterfaceCheck(argument, toType)
}
}
else -> generateNativeInstanceOf(argument, toType)
}
}
@@ -1,4 +1,3 @@
// IGNORE_BACKEND: JS_IR
// EXPECTED_REACHABLE_NODES: 1282
// FILE: castToNativeInterface.kt
external interface I {
@@ -1,4 +1,3 @@
// IGNORE_BACKEND: JS_IR
// EXPECTED_REACHABLE_NODES: 1284
// FILE: castToTypeParamBoundedByNativeInterface.kt
external interface I {