fixup! [Wasm] make top-level function and property declarations with JsModule and JsQualifier resolve according to qualifier without
diff --git a/compiler/ir/backend.wasm/src/org/jetbrains/kotlin/backend/wasm/lower/ComplexExternalDeclarationsToTopLevelFunctionsLowering.kt b/compiler/ir/backend.wasm/src/org/jetbrains/kotlin/backend/wasm/lower/ComplexExternalDeclarationsToTopLevelFunctionsLowering.kt index 024dbc1..cb54c9da 100644 --- a/compiler/ir/backend.wasm/src/org/jetbrains/kotlin/backend/wasm/lower/ComplexExternalDeclarationsToTopLevelFunctionsLowering.kt +++ b/compiler/ir/backend.wasm/src/org/jetbrains/kotlin/backend/wasm/lower/ComplexExternalDeclarationsToTopLevelFunctionsLowering.kt
@@ -449,8 +449,8 @@ val module = currentFile.getJsModule() ?: declaration.getJsModule()?.also { name = when { - declaration is IrClass && declaration.isObject -> null qualifier != null -> name + declaration is IrClass && declaration.isObject -> null else -> "default" } }
diff --git a/compiler/testData/codegen/boxWasmJsInterop/jsModuleWithQualifierOnVariable.kt b/compiler/testData/codegen/boxWasmJsInterop/jsModuleWithQualifierOnVariable.kt index c06fcfa..d4f3c65 100644 --- a/compiler/testData/codegen/boxWasmJsInterop/jsModuleWithQualifierOnVariable.kt +++ b/compiler/testData/codegen/boxWasmJsInterop/jsModuleWithQualifierOnVariable.kt
@@ -27,6 +27,11 @@ @JsQualifier("a.b") external val y: Int +@JsModule("./jsModuleWithQualifierOnVariable.mjs") +@JsQualifier("a.b") +@JsName("y") +external val y1: Int + // FILE: lib2.kt @file:JsModule("./jsModuleWithQualifierOnVariable.mjs") @@ -34,16 +39,22 @@ external fun getX(): Int +@JsName("getX") +external fun getX1(): Int + // FILE: main.kt fun box(): String { if (qualified.x != 10) return "Fail1: ${qualified.x}" if (qualified.y != 20) return "Fail2: ${qualified.y}" + if (qualified.y1 != 20) return "Fail3: ${qualified.y1}" // The variable is referenced through its qualifier, so the write lands on a plain JS object. qualified.x = 30 - if (qualified.x != 30) return "Fail3: ${qualified.x}" - if (named.getX() != 30) return "Fail4: ${named.getX()}" - if (qualified.y != 20) return "Fail5: ${qualified.y}" + if (qualified.x != 30) return "Fail4: ${qualified.x}" + if (named.getX() != 30) return "Fail5: ${named.getX()}" + if (qualified.y != 20) return "Fail6: ${qualified.y}" + if (qualified.y1 != 20) return "Fail7: ${qualified.y1}" + if (named.getX1() != 30) return "Fail8: ${named.getX1()}" return "OK" }