[K/JS, K/Wasm] Generate star imports for external objects with the @JsModule annotation for ES modules

This commit is contained in:
Artem Kobzar
2023-07-18 15:36:19 +00:00
committed by Space Team
parent e61a11f0a3
commit 41f27d19b5
5 changed files with 58 additions and 42 deletions
@@ -366,22 +366,21 @@ class ComplexExternalDeclarationsToTopLevelFunctionsLowering(val context: WasmBa
}
private fun referenceTopLevelExternalDeclaration(declaration: IrDeclarationWithName): String {
var name = declaration.getJsNameOrKotlinName().identifier
var name: String? = declaration.getJsNameOrKotlinName().identifier
val qualifier = currentFile.getJsQualifier()
val module = currentFile.getJsModule()
?: declaration.getJsModule()?.also {
// JsModule on top level declarations imports "default"
name = "default"
name = if (declaration is IrClass && declaration.isObject) null else "default"
}
if (qualifier == null && module == null)
return name
return name!!
val qualifieReference = JsModuleAndQualifierReference(module, qualifier)
context.jsModuleAndQualifierReferences += qualifieReference
return qualifieReference.jsVariableName + "." + name
return qualifieReference.jsVariableName + name?.let { ".$it" }.orEmpty()
}
}