rra/ilgonmic/duplicated-import-names

[JS IR] Add tests with external funs and global vals

[JS IR] Non module cases are exceptions for naming

[JS IR] Use fqn for jsModule on declaration

[JS IR] Add test on same external names

Merge-request: KT-MR-5901
Merged-by: Ilya Goncharov <Ilya.Goncharov@jetbrains.com>

^KT-51438 fixed
This commit is contained in:
Ilya Goncharov
2022-03-14 14:04:27 +00:00
committed by Space
parent a471ddf059
commit 0463b5ec3c
6 changed files with 123 additions and 968 deletions
@@ -10,6 +10,7 @@ import org.jetbrains.kotlin.ir.backend.js.utils.*
import org.jetbrains.kotlin.ir.declarations.*
import org.jetbrains.kotlin.ir.symbols.IrClassSymbol
import org.jetbrains.kotlin.ir.types.IrSimpleType
import org.jetbrains.kotlin.ir.util.fqNameWhenAvailable
import org.jetbrains.kotlin.ir.util.isEffectivelyExternal
import org.jetbrains.kotlin.ir.util.parentAsClass
import org.jetbrains.kotlin.js.backend.ast.*
@@ -40,7 +41,13 @@ class JsNameLinkingNamer(private val context: JsIrBackendContext) : IrNamerBase(
when {
jsModule != null -> {
val name = JsName(declaration.getJsNameOrKotlinName().asString(), false)
val nameString = if (declaration.isJsNonModule()) {
declaration.getJsNameOrKotlinName().asString()
} else {
val parent = declaration.fqNameWhenAvailable!!.parent()
parent.child(declaration.getJsNameOrKotlinName()).asString()
}
val name = JsName(sanitizeName(nameString), false)
importedModules += JsImportedModule(jsModule, name, name.makeRef())
return name
}