[K/JS] Fix nameBindings for ES-modules after the ES-modules external declarations optimization
This commit is contained in:
+1
@@ -90,6 +90,7 @@ class JsNameLinkingNamer(
|
|||||||
else -> JsImport.Target.Default(nameRef)
|
else -> JsImport.Target.Default(nameRef)
|
||||||
}
|
}
|
||||||
imports[this] = JsImport(jsModule, importSubject)
|
imports[this] = JsImport(jsModule, importSubject)
|
||||||
|
nameMap[this] = name
|
||||||
} else {
|
} else {
|
||||||
importedModules += JsImportedModule(jsModule, name, nameRef)
|
importedModules += JsImportedModule(jsModule, name, nameRef)
|
||||||
}
|
}
|
||||||
|
|||||||
+1
-1
@@ -97,7 +97,7 @@ private class JsIrAstSerializer {
|
|||||||
}
|
}
|
||||||
|
|
||||||
fun append(fragment: JsIrProgramFragment): JsIrAstSerializer {
|
fun append(fragment: JsIrProgramFragment): JsIrAstSerializer {
|
||||||
importedNames += fragment.imports.map { fragment.nameBindings[it.key]!! }
|
importedNames += fragment.imports.map { fragment.nameBindings[it.key] ?: error("No binding for tag ${it.key}") }
|
||||||
fragmentSerializer.writeFragment(fragment)
|
fragmentSerializer.writeFragment(fragment)
|
||||||
return this
|
return this
|
||||||
}
|
}
|
||||||
|
|||||||
Generated
+6
@@ -325,6 +325,12 @@ public class JsFirInvalidationPerFileTestGenerated extends AbstractJsFirInvalida
|
|||||||
runTest("js/js.translator/testData/incremental/invalidation/jsModuleAnnotation/");
|
runTest("js/js.translator/testData/incremental/invalidation/jsModuleAnnotation/");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@TestMetadata("jsModuleAnnotationOnObjectWithUsage")
|
||||||
|
public void testJsModuleAnnotationOnObjectWithUsage() throws Exception {
|
||||||
|
runTest("js/js.translator/testData/incremental/invalidation/jsModuleAnnotationOnObjectWithUsage/");
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@TestMetadata("languageVersionSettings")
|
@TestMetadata("languageVersionSettings")
|
||||||
public void testLanguageVersionSettings() throws Exception {
|
public void testLanguageVersionSettings() throws Exception {
|
||||||
|
|||||||
Generated
+6
@@ -325,6 +325,12 @@ public class JsFirInvalidationPerModuleTestGenerated extends AbstractJsFirInvali
|
|||||||
runTest("js/js.translator/testData/incremental/invalidation/jsModuleAnnotation/");
|
runTest("js/js.translator/testData/incremental/invalidation/jsModuleAnnotation/");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@TestMetadata("jsModuleAnnotationOnObjectWithUsage")
|
||||||
|
public void testJsModuleAnnotationOnObjectWithUsage() throws Exception {
|
||||||
|
runTest("js/js.translator/testData/incremental/invalidation/jsModuleAnnotationOnObjectWithUsage/");
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@TestMetadata("languageVersionSettings")
|
@TestMetadata("languageVersionSettings")
|
||||||
public void testLanguageVersionSettings() throws Exception {
|
public void testLanguageVersionSettings() throws Exception {
|
||||||
|
|||||||
Generated
+6
@@ -325,6 +325,12 @@ public class JsIrES6InvalidationPerFileTestGenerated extends AbstractJsIrES6Inva
|
|||||||
runTest("js/js.translator/testData/incremental/invalidation/jsModuleAnnotation/");
|
runTest("js/js.translator/testData/incremental/invalidation/jsModuleAnnotation/");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@TestMetadata("jsModuleAnnotationOnObjectWithUsage")
|
||||||
|
public void testJsModuleAnnotationOnObjectWithUsage() throws Exception {
|
||||||
|
runTest("js/js.translator/testData/incremental/invalidation/jsModuleAnnotationOnObjectWithUsage/");
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@TestMetadata("languageVersionSettings")
|
@TestMetadata("languageVersionSettings")
|
||||||
public void testLanguageVersionSettings() throws Exception {
|
public void testLanguageVersionSettings() throws Exception {
|
||||||
|
|||||||
+6
@@ -325,6 +325,12 @@ public class JsIrES6InvalidationPerModuleTestGenerated extends AbstractJsIrES6In
|
|||||||
runTest("js/js.translator/testData/incremental/invalidation/jsModuleAnnotation/");
|
runTest("js/js.translator/testData/incremental/invalidation/jsModuleAnnotation/");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@TestMetadata("jsModuleAnnotationOnObjectWithUsage")
|
||||||
|
public void testJsModuleAnnotationOnObjectWithUsage() throws Exception {
|
||||||
|
runTest("js/js.translator/testData/incremental/invalidation/jsModuleAnnotationOnObjectWithUsage/");
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@TestMetadata("languageVersionSettings")
|
@TestMetadata("languageVersionSettings")
|
||||||
public void testLanguageVersionSettings() throws Exception {
|
public void testLanguageVersionSettings() throws Exception {
|
||||||
|
|||||||
Generated
+6
@@ -325,6 +325,12 @@ public class JsIrInvalidationPerFileTestGenerated extends AbstractJsIrInvalidati
|
|||||||
runTest("js/js.translator/testData/incremental/invalidation/jsModuleAnnotation/");
|
runTest("js/js.translator/testData/incremental/invalidation/jsModuleAnnotation/");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@TestMetadata("jsModuleAnnotationOnObjectWithUsage")
|
||||||
|
public void testJsModuleAnnotationOnObjectWithUsage() throws Exception {
|
||||||
|
runTest("js/js.translator/testData/incremental/invalidation/jsModuleAnnotationOnObjectWithUsage/");
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@TestMetadata("languageVersionSettings")
|
@TestMetadata("languageVersionSettings")
|
||||||
public void testLanguageVersionSettings() throws Exception {
|
public void testLanguageVersionSettings() throws Exception {
|
||||||
|
|||||||
Generated
+6
@@ -325,6 +325,12 @@ public class JsIrInvalidationPerModuleTestGenerated extends AbstractJsIrInvalida
|
|||||||
runTest("js/js.translator/testData/incremental/invalidation/jsModuleAnnotation/");
|
runTest("js/js.translator/testData/incremental/invalidation/jsModuleAnnotation/");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@TestMetadata("jsModuleAnnotationOnObjectWithUsage")
|
||||||
|
public void testJsModuleAnnotationOnObjectWithUsage() throws Exception {
|
||||||
|
runTest("js/js.translator/testData/incremental/invalidation/jsModuleAnnotationOnObjectWithUsage/");
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@TestMetadata("languageVersionSettings")
|
@TestMetadata("languageVersionSettings")
|
||||||
public void testLanguageVersionSettings() throws Exception {
|
public void testLanguageVersionSettings() throws Exception {
|
||||||
|
|||||||
+3
@@ -0,0 +1,3 @@
|
|||||||
|
external object ObjectB {
|
||||||
|
fun getResult(): String
|
||||||
|
}
|
||||||
+5
@@ -0,0 +1,5 @@
|
|||||||
|
@JsNonModule
|
||||||
|
@JsModule("../third-party-lib.mjs")
|
||||||
|
external object ObjectB {
|
||||||
|
fun getResult(): String
|
||||||
|
}
|
||||||
+8
@@ -0,0 +1,8 @@
|
|||||||
|
STEP 0:
|
||||||
|
modifications:
|
||||||
|
U : ObjectB.0.kt -> ObjectB.kt
|
||||||
|
added file: ObjectB.kt
|
||||||
|
STEP 1:
|
||||||
|
modifications:
|
||||||
|
U : ObjectB.1.kt -> ObjectB.kt
|
||||||
|
modified ir: ObjectB.kt
|
||||||
Vendored
+9
@@ -0,0 +1,9 @@
|
|||||||
|
@OptIn(kotlin.ExperimentalStdlibApi::class)
|
||||||
|
@EagerInitialization
|
||||||
|
val initJsObject = js("""
|
||||||
|
globalThis.ObjectB = { getResult: function() { return "OK" } }
|
||||||
|
""")
|
||||||
|
|
||||||
|
fun box(stepId: Int): String {
|
||||||
|
return ObjectB.getResult()
|
||||||
|
}
|
||||||
+6
@@ -0,0 +1,6 @@
|
|||||||
|
STEP 0:
|
||||||
|
dependencies: lib1
|
||||||
|
added file: m.kt
|
||||||
|
STEP 1:
|
||||||
|
dependencies: lib1
|
||||||
|
updated imports: m.kt
|
||||||
Vendored
+12
@@ -0,0 +1,12 @@
|
|||||||
|
MODULES: lib1, main
|
||||||
|
MODULE_KIND: es
|
||||||
|
IGNORE_PER_MODULE: true
|
||||||
|
|
||||||
|
STEP 0:
|
||||||
|
libs: lib1, main
|
||||||
|
dirty js modules: lib1, main
|
||||||
|
dirty js files: lib1/ObjectB, main/m, main/m.export, main
|
||||||
|
STEP 1:
|
||||||
|
libs: lib1, main
|
||||||
|
dirty js modules: lib1, main
|
||||||
|
dirty js files: lib1/ObjectB, main/m
|
||||||
+3
@@ -0,0 +1,3 @@
|
|||||||
|
export function getResult() {
|
||||||
|
return "OK"
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user