From db5baf7fa70824c57dcc01ceb72024c530c195f7 Mon Sep 17 00:00:00 2001 From: Alexey Andreev Date: Thu, 19 May 2016 19:59:28 +0300 Subject: [PATCH] KT-8386: pass mutable list to JsInvocation from intrinsic generator, so that inliner had a chance to replace arguments --- .../js/test/semantics/InlineJsTestGenerated.java | 6 ++++++ .../kotlin/js/translate/utils/TranslationUtils.java | 4 ---- .../inline/cases/iteratorOnInlineFunctionResult.kt | 12 ++++++++++++ 3 files changed, 18 insertions(+), 4 deletions(-) create mode 100644 js/js.translator/testData/inline/cases/iteratorOnInlineFunctionResult.kt diff --git a/js/js.tests/test/org/jetbrains/kotlin/js/test/semantics/InlineJsTestGenerated.java b/js/js.tests/test/org/jetbrains/kotlin/js/test/semantics/InlineJsTestGenerated.java index 68cc1c1c8b7..98e88c19926 100644 --- a/js/js.tests/test/org/jetbrains/kotlin/js/test/semantics/InlineJsTestGenerated.java +++ b/js/js.tests/test/org/jetbrains/kotlin/js/test/semantics/InlineJsTestGenerated.java @@ -215,6 +215,12 @@ public class InlineJsTestGenerated extends AbstractInlineJsTest { doTest(fileName); } + @TestMetadata("iteratorOnInlineFunctionResult.kt") + public void testIteratorOnInlineFunctionResult() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("js/js.translator/testData/inline/cases/iteratorOnInlineFunctionResult.kt"); + doTest(fileName); + } + @TestMetadata("jsCode.kt") public void testJsCode() throws Exception { String fileName = KotlinTestUtils.navigationMetadata("js/js.translator/testData/inline/cases/jsCode.kt"); diff --git a/js/js.translator/src/org/jetbrains/kotlin/js/translate/utils/TranslationUtils.java b/js/js.translator/src/org/jetbrains/kotlin/js/translate/utils/TranslationUtils.java index eca02225fe7..c25c72ed25f 100644 --- a/js/js.translator/src/org/jetbrains/kotlin/js/translate/utils/TranslationUtils.java +++ b/js/js.translator/src/org/jetbrains/kotlin/js/translate/utils/TranslationUtils.java @@ -239,10 +239,6 @@ public final class TranslationUtils { @NotNull public static List generateInvocationArguments(@NotNull JsExpression receiver, @NotNull List arguments) { - if (arguments.isEmpty()) { - return Collections.singletonList(receiver); - } - List argumentList = new ArrayList(1 + arguments.size()); argumentList.add(receiver); argumentList.addAll(arguments); diff --git a/js/js.translator/testData/inline/cases/iteratorOnInlineFunctionResult.kt b/js/js.translator/testData/inline/cases/iteratorOnInlineFunctionResult.kt new file mode 100644 index 00000000000..811b8755ee0 --- /dev/null +++ b/js/js.translator/testData/inline/cases/iteratorOnInlineFunctionResult.kt @@ -0,0 +1,12 @@ +package foo + +inline fun bar(f: () -> Int): Array = arrayOf(f()) + +fun box(): String { + val iterator = bar { 23 }.iterator() + assertEquals(true, iterator.hasNext()) + assertEquals(23, iterator.next()) + assertEquals(false, iterator.hasNext()) + + return "OK" +} \ No newline at end of file