From 08a7f9c2981137f60ab6112a415b8e5ddcdceff0 Mon Sep 17 00:00:00 2001 From: Alexey Andreev Date: Mon, 4 Jul 2016 15:32:02 +0300 Subject: [PATCH] KT-12877: reorganize JS module tests to support different module systems. Test JsModule in conjunction with JsNonModule and plain module type --- .../js/test/semantics/BoxJsTestGenerated.java | 6 ++++++ .../js/translate/context/StaticContext.java | 19 ++++++++++-------- .../box/jsModule/externalFunctionPlain.js | 3 +++ .../box/jsModule/externalFunctionPlain.kt | 10 ++++++++++ .../externalPackageInDifferentFile.a.kt | 18 ----------------- .../externalPackageInDifferentFile.b.kt | 20 ------------------- .../cases/jsModuleOnPackage/dependencies.txt | 2 -- .../cases/jsModuleOnPackage/lib/lib.kt | 18 ----------------- .../cases/jsModuleOnPackage/main/main.kt | 18 ----------------- 9 files changed, 30 insertions(+), 84 deletions(-) create mode 100644 js/js.translator/testData/box/jsModule/externalFunctionPlain.js create mode 100644 js/js.translator/testData/box/jsModule/externalFunctionPlain.kt delete mode 100644 js/js.translator/testData/jsModule/cases/externalPackageInDifferentFile/externalPackageInDifferentFile.a.kt delete mode 100644 js/js.translator/testData/jsModule/cases/externalPackageInDifferentFile/externalPackageInDifferentFile.b.kt delete mode 100644 js/js.translator/testData/multiModuleWrappers/cases/jsModuleOnPackage/dependencies.txt delete mode 100644 js/js.translator/testData/multiModuleWrappers/cases/jsModuleOnPackage/lib/lib.kt delete mode 100644 js/js.translator/testData/multiModuleWrappers/cases/jsModuleOnPackage/main/main.kt diff --git a/js/js.tests/test/org/jetbrains/kotlin/js/test/semantics/BoxJsTestGenerated.java b/js/js.tests/test/org/jetbrains/kotlin/js/test/semantics/BoxJsTestGenerated.java index 0ecdc88116d..bd37ecac9e7 100644 --- a/js/js.tests/test/org/jetbrains/kotlin/js/test/semantics/BoxJsTestGenerated.java +++ b/js/js.tests/test/org/jetbrains/kotlin/js/test/semantics/BoxJsTestGenerated.java @@ -4994,6 +4994,12 @@ public class BoxJsTestGenerated extends AbstractBoxJsTest { doTest(fileName); } + @TestMetadata("externalFunctionPlain.kt") + public void testExternalFunctionPlain() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("js/js.translator/testData/box/jsModule/externalFunctionPlain.kt"); + doTest(fileName); + } + @TestMetadata("externalObject.kt") public void testExternalObject() throws Exception { String fileName = KotlinTestUtils.navigationMetadata("js/js.translator/testData/box/jsModule/externalObject.kt"); diff --git a/js/js.translator/src/org/jetbrains/kotlin/js/translate/context/StaticContext.java b/js/js.translator/src/org/jetbrains/kotlin/js/translate/context/StaticContext.java index f70de694996..86fc5618520 100644 --- a/js/js.translator/src/org/jetbrains/kotlin/js/translate/context/StaticContext.java +++ b/js/js.translator/src/org/jetbrains/kotlin/js/translate/context/StaticContext.java @@ -45,6 +45,7 @@ import org.jetbrains.kotlin.resolve.BindingTrace; import org.jetbrains.kotlin.resolve.DescriptorUtils; import org.jetbrains.kotlin.resolve.calls.tasks.DynamicCallsKt; import org.jetbrains.kotlin.resolve.descriptorUtil.DescriptorUtilsKt; +import org.jetbrains.kotlin.serialization.js.ModuleKind; import java.util.*; @@ -249,15 +250,17 @@ public final class StaticContext { return result != null ? result : pureFqn(Namer.getRootPackageName(), null); } - String moduleName = AnnotationsUtils.getModuleName(suggested.getDescriptor()); - if (moduleName != null) { - return JsAstUtils.pureFqn(getModuleInternalName(moduleName), null); - } + if (config.getModuleKind() != ModuleKind.PLAIN) { + String moduleName = AnnotationsUtils.getModuleName(suggested.getDescriptor()); + if (moduleName != null) { + return JsAstUtils.pureFqn(getModuleInternalName(moduleName), null); + } - if (isNativeObject(suggested.getDescriptor())) { - String fileModuleName = AnnotationsUtils.getFileModuleName(getBindingContext(), suggested.getDescriptor()); - if (fileModuleName != null) { - return pureFqn(getNameForDescriptor(suggested.getDescriptor()), pureFqn(getModuleInternalName(fileModuleName), null)); + if (isNativeObject(suggested.getDescriptor())) { + String fileModuleName = AnnotationsUtils.getFileModuleName(getBindingContext(), suggested.getDescriptor()); + if (fileModuleName != null) { + return pureFqn(getNameForDescriptor(suggested.getDescriptor()), pureFqn(getModuleInternalName(fileModuleName), null)); + } } } diff --git a/js/js.translator/testData/box/jsModule/externalFunctionPlain.js b/js/js.translator/testData/box/jsModule/externalFunctionPlain.js new file mode 100644 index 00000000000..b46cb3502b6 --- /dev/null +++ b/js/js.translator/testData/box/jsModule/externalFunctionPlain.js @@ -0,0 +1,3 @@ +function foo(y) { + return 23 + y; +} \ No newline at end of file diff --git a/js/js.translator/testData/box/jsModule/externalFunctionPlain.kt b/js/js.translator/testData/box/jsModule/externalFunctionPlain.kt new file mode 100644 index 00000000000..8d9761df13b --- /dev/null +++ b/js/js.translator/testData/box/jsModule/externalFunctionPlain.kt @@ -0,0 +1,10 @@ +package foo + +@JsModule("lib") +@JsNonModule +@native fun foo(y: Int): Int = noImpl + +fun box(): String { + assertEquals(65, foo(42)) + return "OK" +} \ No newline at end of file diff --git a/js/js.translator/testData/jsModule/cases/externalPackageInDifferentFile/externalPackageInDifferentFile.a.kt b/js/js.translator/testData/jsModule/cases/externalPackageInDifferentFile/externalPackageInDifferentFile.a.kt deleted file mode 100644 index f176045a82c..00000000000 --- a/js/js.translator/testData/jsModule/cases/externalPackageInDifferentFile/externalPackageInDifferentFile.a.kt +++ /dev/null @@ -1,18 +0,0 @@ -@file:JsModule("lib") -package foo - -@native class A(@native val x: Int = noImpl) { - @native fun foo(y: Int): Int = noImpl -} - -@native object B { - @native val x: Int = noImpl - - @native fun foo(y: Int): Int = noImpl -} - -@native fun foo(y: Int): Int = noImpl - -@native val bar: Int = noImpl - -@native var mbar: Int = noImpl \ No newline at end of file diff --git a/js/js.translator/testData/jsModule/cases/externalPackageInDifferentFile/externalPackageInDifferentFile.b.kt b/js/js.translator/testData/jsModule/cases/externalPackageInDifferentFile/externalPackageInDifferentFile.b.kt deleted file mode 100644 index 94d0a1a08d5..00000000000 --- a/js/js.translator/testData/jsModule/cases/externalPackageInDifferentFile/externalPackageInDifferentFile.b.kt +++ /dev/null @@ -1,20 +0,0 @@ -package foo - -fun box(): String { - val a = A(23) - assertEquals(23, a.x) - assertEquals(65, a.foo(42)) - - assertEquals(123, B.x) - assertEquals(265, B.foo(142)) - - assertEquals(365, foo(42)) - assertEquals(423, bar) - - assertEquals(12345, C.f()) - - mbar = 523 - assertEquals(523, mbar) - - return "OK" -} \ No newline at end of file diff --git a/js/js.translator/testData/multiModuleWrappers/cases/jsModuleOnPackage/dependencies.txt b/js/js.translator/testData/multiModuleWrappers/cases/jsModuleOnPackage/dependencies.txt deleted file mode 100644 index e74a34660da..00000000000 --- a/js/js.translator/testData/multiModuleWrappers/cases/jsModuleOnPackage/dependencies.txt +++ /dev/null @@ -1,2 +0,0 @@ -lib-> -main->lib \ No newline at end of file diff --git a/js/js.translator/testData/multiModuleWrappers/cases/jsModuleOnPackage/lib/lib.kt b/js/js.translator/testData/multiModuleWrappers/cases/jsModuleOnPackage/lib/lib.kt deleted file mode 100644 index 11ae90a290e..00000000000 --- a/js/js.translator/testData/multiModuleWrappers/cases/jsModuleOnPackage/lib/lib.kt +++ /dev/null @@ -1,18 +0,0 @@ -@file:JsModule("native-lib") -package foo - -@native class A(@native val x: Int = noImpl) { - @native fun foo(y: Int): Int = noImpl -} - -@native object B { - @native val x: Int = noImpl - - @native fun foo(y: Int): Int = noImpl -} - -@native fun foo(y: Int): Int = noImpl - -@native val bar: Int = noImpl - -@native var mbar: Int = noImpl \ No newline at end of file diff --git a/js/js.translator/testData/multiModuleWrappers/cases/jsModuleOnPackage/main/main.kt b/js/js.translator/testData/multiModuleWrappers/cases/jsModuleOnPackage/main/main.kt deleted file mode 100644 index 9e3fbbb8fc0..00000000000 --- a/js/js.translator/testData/multiModuleWrappers/cases/jsModuleOnPackage/main/main.kt +++ /dev/null @@ -1,18 +0,0 @@ -package foo - -fun box(): String { - val a = A(23) - assertEquals(23, a.x) - assertEquals(65, a.foo(42)) - - assertEquals(123, B.x) - assertEquals(265, B.foo(142)) - - assertEquals(365, foo(42)) - assertEquals(423, bar) - - mbar = 523 - assertEquals(523, mbar) - - return "OK" -} \ No newline at end of file