diff --git a/js/js.tests/test/org/jetbrains/kotlin/js/test/BasicBoxTest.kt b/js/js.tests/test/org/jetbrains/kotlin/js/test/BasicBoxTest.kt index dcb2aad73d4..f6a3caa3a3a 100644 --- a/js/js.tests/test/org/jetbrains/kotlin/js/test/BasicBoxTest.kt +++ b/js/js.tests/test/org/jetbrains/kotlin/js/test/BasicBoxTest.kt @@ -118,9 +118,12 @@ abstract class BasicBoxTest( } val additionalFiles = mutableListOf() - if (modules.size > 1 || MODULE_KIND_PATTERN.matcher(expectedText).find()) { + if ((modules.size > 1 || MODULE_KIND_PATTERN.matcher(expectedText).find()) && + !NO_MODULE_SYSTEM_PATTERN.matcher(expectedText).find() + ) { additionalFiles += MODULE_EMULATION_FILE } + val additionalJsFile = filePath.removeSuffix("." + KotlinFileType.EXTENSION) + JavaScript.DOT_EXTENSION if (File(additionalJsFile).exists()) { additionalFiles += additionalJsFile @@ -327,6 +330,7 @@ abstract class BasicBoxTest( val TEST_DATA_DIR_PATH = "js/js.translator/testData/" private val MODULE_KIND_PATTERN = Pattern.compile("^// *MODULE_KIND: *(.+)$", Pattern.MULTILINE) + private val NO_MODULE_SYSTEM_PATTERN = Pattern.compile("^// *NO_JS_MODULE_SYSTEM", Pattern.MULTILINE) private val NO_INLINE_PATTERN = Pattern.compile("^// *NO_INLINE *$", Pattern.MULTILINE) private val SKIP_NODE_JS = Pattern.compile("^// *SKIP_NODE_JS *$", Pattern.MULTILINE) } 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 bd37ecac9e7..5980a879a6d 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 @@ -5000,6 +5000,18 @@ public class BoxJsTestGenerated extends AbstractBoxJsTest { doTest(fileName); } + @TestMetadata("externalFunctionUmd.kt") + public void testExternalFunctionUmd() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("js/js.translator/testData/box/jsModule/externalFunctionUmd.kt"); + doTest(fileName); + } + + @TestMetadata("externalFunctionUmdFallback.kt") + public void testExternalFunctionUmdFallback() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("js/js.translator/testData/box/jsModule/externalFunctionUmdFallback.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/testData/box/jsModule/externalFunctionUmd.js b/js/js.translator/testData/box/jsModule/externalFunctionUmd.js new file mode 100644 index 00000000000..97c66332846 --- /dev/null +++ b/js/js.translator/testData/box/jsModule/externalFunctionUmd.js @@ -0,0 +1,5 @@ +define("lib-foo", [], function() { + return function(y) { + return 23 + y; + }; +}); \ No newline at end of file diff --git a/js/js.translator/testData/box/jsModule/externalFunctionUmd.kt b/js/js.translator/testData/box/jsModule/externalFunctionUmd.kt new file mode 100644 index 00000000000..6be4e6e87b1 --- /dev/null +++ b/js/js.translator/testData/box/jsModule/externalFunctionUmd.kt @@ -0,0 +1,11 @@ +// MODULE_KIND: UMD +package foo + +@JsModule("lib-foo") +@JsNonModule +@native fun foo(x: 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/box/jsModule/externalFunctionUmdFallback.js b/js/js.translator/testData/box/jsModule/externalFunctionUmdFallback.js new file mode 100644 index 00000000000..c13cd43caa0 --- /dev/null +++ b/js/js.translator/testData/box/jsModule/externalFunctionUmdFallback.js @@ -0,0 +1,3 @@ +function lib(y) { + return 23 + y; +} \ No newline at end of file diff --git a/js/js.translator/testData/box/jsModule/externalFunctionUmdFallback.kt b/js/js.translator/testData/box/jsModule/externalFunctionUmdFallback.kt new file mode 100644 index 00000000000..d9e1182d55c --- /dev/null +++ b/js/js.translator/testData/box/jsModule/externalFunctionUmdFallback.kt @@ -0,0 +1,12 @@ +// MODULE_KIND: UMD +// NO_JS_MODULE_SYSTEM +package foo + +@JsModule("lib") +@JsNonModule +@native fun foo(x: Int): Int = noImpl + +fun box(): String { + assertEquals(65, foo(42)) + return "OK" +} \ No newline at end of file