diff --git a/compiler/testData/codegen/box/external/jsWithDefaultArg.kt b/compiler/testData/codegen/box/external/jsWithDefaultArg.kt deleted file mode 100644 index e36cd0297ef..00000000000 --- a/compiler/testData/codegen/box/external/jsWithDefaultArg.kt +++ /dev/null @@ -1,25 +0,0 @@ -// TARGET_BACKEND: JS_IR -// CALL_MAIN - -external fun create( - p0: String = definedExternally, - p1: String = definedExternally, - p2: String = definedExternally, - p3: String = definedExternally, - p4: String = definedExternally, -) : Array - -fun main() { - js("global.create = function() {return arguments}") -} - -fun box(): String { - val zeroArgs = create() - if (zeroArgs.size != 0) return "fail: $zeroArgs arguments instead 0" - - val p2 = "p2" - val threeArgs = create(p2 = p2) - if (threeArgs.size != 3 || threeArgs[2] != p2) return "fail: $threeArgs arguments instead 3" - - return "OK" -} diff --git a/js/js.tests/test/org/jetbrains/kotlin/js/test/es6/semantics/IrBoxJsES6TestGenerated.java b/js/js.tests/test/org/jetbrains/kotlin/js/test/es6/semantics/IrBoxJsES6TestGenerated.java index ef593b685e6..9febd26bcd2 100644 --- a/js/js.tests/test/org/jetbrains/kotlin/js/test/es6/semantics/IrBoxJsES6TestGenerated.java +++ b/js/js.tests/test/org/jetbrains/kotlin/js/test/es6/semantics/IrBoxJsES6TestGenerated.java @@ -1025,6 +1025,16 @@ public class IrBoxJsES6TestGenerated extends AbstractIrBoxJsES6Test { runTest("js/js.translator/testData/box/defaultArguments/extensionFunWithDefArgs.kt"); } + @TestMetadata("externalTailArgsClass.kt") + public void testExternalTailArgsClass() throws Exception { + runTest("js/js.translator/testData/box/defaultArguments/externalTailArgsClass.kt"); + } + + @TestMetadata("externalTailArgsFun.kt") + public void testExternalTailArgsFun() throws Exception { + runTest("js/js.translator/testData/box/defaultArguments/externalTailArgsFun.kt"); + } + @TestMetadata("funInAbstractClassWithDefArg.kt") public void testFunInAbstractClassWithDefArg() throws Exception { runTest("js/js.translator/testData/box/defaultArguments/funInAbstractClassWithDefArg.kt"); diff --git a/js/js.tests/test/org/jetbrains/kotlin/js/test/es6/semantics/IrJsCodegenBoxES6TestGenerated.java b/js/js.tests/test/org/jetbrains/kotlin/js/test/es6/semantics/IrJsCodegenBoxES6TestGenerated.java index db5ded7a451..ded22676945 100644 --- a/js/js.tests/test/org/jetbrains/kotlin/js/test/es6/semantics/IrJsCodegenBoxES6TestGenerated.java +++ b/js/js.tests/test/org/jetbrains/kotlin/js/test/es6/semantics/IrJsCodegenBoxES6TestGenerated.java @@ -10077,11 +10077,6 @@ public class IrJsCodegenBoxES6TestGenerated extends AbstractIrJsCodegenBoxES6Tes public void testAllFilesPresentInExternal() throws Exception { KotlinTestUtils.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/codegen/box/external"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.JS_IR_ES6, true); } - - @TestMetadata("jsWithDefaultArg.kt") - public void testJsWithDefaultArg() throws Exception { - runTest("compiler/testData/codegen/box/external/jsWithDefaultArg.kt"); - } } @TestMetadata("compiler/testData/codegen/box/fakeOverride") diff --git a/js/js.tests/test/org/jetbrains/kotlin/js/test/ir/semantics/IrBoxJsTestGenerated.java b/js/js.tests/test/org/jetbrains/kotlin/js/test/ir/semantics/IrBoxJsTestGenerated.java index eb89de9f159..f3f38e10b55 100644 --- a/js/js.tests/test/org/jetbrains/kotlin/js/test/ir/semantics/IrBoxJsTestGenerated.java +++ b/js/js.tests/test/org/jetbrains/kotlin/js/test/ir/semantics/IrBoxJsTestGenerated.java @@ -1025,6 +1025,16 @@ public class IrBoxJsTestGenerated extends AbstractIrBoxJsTest { runTest("js/js.translator/testData/box/defaultArguments/extensionFunWithDefArgs.kt"); } + @TestMetadata("externalTailArgsClass.kt") + public void testExternalTailArgsClass() throws Exception { + runTest("js/js.translator/testData/box/defaultArguments/externalTailArgsClass.kt"); + } + + @TestMetadata("externalTailArgsFun.kt") + public void testExternalTailArgsFun() throws Exception { + runTest("js/js.translator/testData/box/defaultArguments/externalTailArgsFun.kt"); + } + @TestMetadata("funInAbstractClassWithDefArg.kt") public void testFunInAbstractClassWithDefArg() throws Exception { runTest("js/js.translator/testData/box/defaultArguments/funInAbstractClassWithDefArg.kt"); diff --git a/js/js.tests/test/org/jetbrains/kotlin/js/test/ir/semantics/IrJsCodegenBoxTestGenerated.java b/js/js.tests/test/org/jetbrains/kotlin/js/test/ir/semantics/IrJsCodegenBoxTestGenerated.java index 65272c1f44b..f4943aebaf4 100644 --- a/js/js.tests/test/org/jetbrains/kotlin/js/test/ir/semantics/IrJsCodegenBoxTestGenerated.java +++ b/js/js.tests/test/org/jetbrains/kotlin/js/test/ir/semantics/IrJsCodegenBoxTestGenerated.java @@ -10077,11 +10077,6 @@ public class IrJsCodegenBoxTestGenerated extends AbstractIrJsCodegenBoxTest { public void testAllFilesPresentInExternal() throws Exception { KotlinTestUtils.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/codegen/box/external"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.JS_IR, true); } - - @TestMetadata("jsWithDefaultArg.kt") - public void testJsWithDefaultArg() throws Exception { - runTest("compiler/testData/codegen/box/external/jsWithDefaultArg.kt"); - } } @TestMetadata("compiler/testData/codegen/box/fakeOverride") 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 4e8759e734f..e7cc60e9713 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 @@ -1025,6 +1025,16 @@ public class BoxJsTestGenerated extends AbstractBoxJsTest { runTest("js/js.translator/testData/box/defaultArguments/extensionFunWithDefArgs.kt"); } + @TestMetadata("externalTailArgsClass.kt") + public void testExternalTailArgsClass() throws Exception { + runTest("js/js.translator/testData/box/defaultArguments/externalTailArgsClass.kt"); + } + + @TestMetadata("externalTailArgsFun.kt") + public void testExternalTailArgsFun() throws Exception { + runTest("js/js.translator/testData/box/defaultArguments/externalTailArgsFun.kt"); + } + @TestMetadata("funInAbstractClassWithDefArg.kt") public void testFunInAbstractClassWithDefArg() throws Exception { runTest("js/js.translator/testData/box/defaultArguments/funInAbstractClassWithDefArg.kt"); diff --git a/js/js.translator/testData/box/defaultArguments/externalTailArgsClass.kt b/js/js.translator/testData/box/defaultArguments/externalTailArgsClass.kt new file mode 100644 index 00000000000..ffed5e03bc9 --- /dev/null +++ b/js/js.translator/testData/box/defaultArguments/externalTailArgsClass.kt @@ -0,0 +1,28 @@ +// FILE: main.kt +external class TailArgs( + p0: String = definedExternally, + p1: String = definedExternally, + p2: String = definedExternally, + p3: String = definedExternally, + p4: String = definedExternally, +) + +external val ctorArgs: Array + +fun box(): String { + val p2 = "p2" + + TailArgs() + if (ctorArgs.size != 0) return "fail2: $ctorArgs arguments instead 0" + + TailArgs(p2 = p2) + if (ctorArgs.size != 3 || ctorArgs[2] != p2) return "fail3: $ctorArgs arguments instead 3" + + return "OK" +} + +// FILE: main.js +var ctorArgs; +function TailArgs() { + ctorArgs = arguments +} diff --git a/js/js.translator/testData/box/defaultArguments/externalTailArgsFun.kt b/js/js.translator/testData/box/defaultArguments/externalTailArgsFun.kt new file mode 100644 index 00000000000..c0b6b7a52f2 --- /dev/null +++ b/js/js.translator/testData/box/defaultArguments/externalTailArgsFun.kt @@ -0,0 +1,24 @@ +// FILE: main.kt +external fun create( + p0: String = definedExternally, + p1: String = definedExternally, + p2: String = definedExternally, + p3: String = definedExternally, + p4: String = definedExternally, +) : Array + +fun box(): String { + val zeroArgsFun = create() + if (zeroArgsFun.size != 0) return "fail: $zeroArgsFun arguments instead 0" + + val p2 = "p2" + val threeArgsFun = create(p2 = p2) + if (threeArgsFun.size != 3 || threeArgsFun[2] != p2) return "fail1: $threeArgsFun arguments instead 3" + + return "OK" +} + +// FILE: main.js +function create() { + return arguments +}