From 1e0be4e0af74a48a7519a1934c7bc15ceb275166 Mon Sep 17 00:00:00 2001 From: Igor Yakovlev Date: Tue, 16 May 2023 15:39:44 +0200 Subject: [PATCH] [Wasm] Fix null constant typed with external class upperbound --- .../kotlin/backend/wasm/ir2wasm/DeclarationGenerator.kt | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/compiler/ir/backend.wasm/src/org/jetbrains/kotlin/backend/wasm/ir2wasm/DeclarationGenerator.kt b/compiler/ir/backend.wasm/src/org/jetbrains/kotlin/backend/wasm/ir2wasm/DeclarationGenerator.kt index fa75cb16c6b..f810365e739 100644 --- a/compiler/ir/backend.wasm/src/org/jetbrains/kotlin/backend/wasm/ir2wasm/DeclarationGenerator.kt +++ b/compiler/ir/backend.wasm/src/org/jetbrains/kotlin/backend/wasm/ir2wasm/DeclarationGenerator.kt @@ -12,10 +12,7 @@ import org.jetbrains.kotlin.config.languageVersionSettings import org.jetbrains.kotlin.descriptors.Modality import org.jetbrains.kotlin.ir.IrBuiltIns import org.jetbrains.kotlin.ir.IrElement -import org.jetbrains.kotlin.ir.backend.js.utils.isJsExport -import org.jetbrains.kotlin.ir.backend.js.utils.findUnitGetInstanceFunction -import org.jetbrains.kotlin.ir.backend.js.utils.getJsNameOrKotlinName -import org.jetbrains.kotlin.ir.backend.js.utils.realOverrideTarget +import org.jetbrains.kotlin.ir.backend.js.utils.* import org.jetbrains.kotlin.ir.declarations.* import org.jetbrains.kotlin.ir.expressions.IrBlockBody import org.jetbrains.kotlin.ir.expressions.IrConst @@ -515,7 +512,8 @@ fun generateConstExpression( ) = when (val kind = expression.kind) { is IrConstKind.Null -> { - val bottomType = if (expression.type.getClass()?.isExternal == true) WasmRefNullExternrefType else WasmRefNullNoneType + val isExternal = expression.type.getClass()?.isExternal ?: expression.type.erasedUpperBound?.isExternal + val bottomType = if (isExternal == true) WasmRefNullExternrefType else WasmRefNullNoneType body.buildInstr(WasmOp.REF_NULL, location, WasmImmediate.HeapType(bottomType)) } is IrConstKind.Boolean -> body.buildConstI32(if (kind.valueOf(expression)) 1 else 0, location)