From df5872281b98c10f883aa31749003993abe19c77 Mon Sep 17 00:00:00 2001 From: romanart Date: Thu, 18 Oct 2018 00:01:10 +0300 Subject: [PATCH] [JS IR BE] Support instance check for `Nothing` type --- .../kotlin/ir/backend/js/lower/TypeOperatorLowering.kt | 2 ++ 1 file changed, 2 insertions(+) diff --git a/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/lower/TypeOperatorLowering.kt b/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/lower/TypeOperatorLowering.kt index 5303f6a6f9d..5bfa5ea28b4 100644 --- a/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/lower/TypeOperatorLowering.kt +++ b/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/lower/TypeOperatorLowering.kt @@ -62,6 +62,7 @@ class TypeOperatorLowering(val context: JsIrBackendContext) : FileLoweringPass { private val numberMarker = JsIrBuilder.buildString(context.irBuiltIns.stringType, "number") private val litTrue: IrExpression = JsIrBuilder.buildBoolean(context.irBuiltIns.booleanType, true) + private val litFalse: IrExpression = JsIrBuilder.buildBoolean(context.irBuiltIns.booleanType, false) private val litNull: IrExpression = JsIrBuilder.buildNull(context.irBuiltIns.nothingNType) override fun lower(irFile: IrFile) { @@ -214,6 +215,7 @@ class TypeOperatorLowering(val context: JsIrBackendContext) : FileLoweringPass { assert(!toType.isMarkedNullable()) return when { toType.isAny() -> generateIsObjectCheck(argument) + toType.isNothing() -> JsIrBuilder.buildComposite(context.irBuiltIns.booleanType, listOf(argument, litFalse)) isTypeOfCheckingType(toType) -> generateTypeOfCheck(argument, toType) // toType.isChar() -> generateCheckForChar(argument) toType.isNumber() -> generateNumberCheck(argument)