diff --git a/js/js.tests/test/org/jetbrains/kotlin/js/test/optimizer/IneffectiveStatementEliminationTest.kt b/js/js.tests/test/org/jetbrains/kotlin/js/test/optimizer/IneffectiveStatementEliminationTest.kt index f2e679d2293..c88c2fa1ed4 100644 --- a/js/js.tests/test/org/jetbrains/kotlin/js/test/optimizer/IneffectiveStatementEliminationTest.kt +++ b/js/js.tests/test/org/jetbrains/kotlin/js/test/optimizer/IneffectiveStatementEliminationTest.kt @@ -26,4 +26,6 @@ class IneffectiveStatementEliminationTest() : BasicOptimizerTest("ineffective-st @Test fun conditional() = box() @Test fun literal() = box() + + @Test fun parameters() = box() } diff --git a/js/js.translator/testData/js-optimizer/ineffective-statement-elimination/binary.optimized.js b/js/js.translator/testData/js-optimizer/ineffective-statement-elimination/binary.optimized.js index e1968dd3d2f..3ba32f0eb2e 100644 --- a/js/js.translator/testData/js-optimizer/ineffective-statement-elimination/binary.optimized.js +++ b/js/js.translator/testData/js-optimizer/ineffective-statement-elimination/binary.optimized.js @@ -10,13 +10,16 @@ function se2(value) { } function test1() { - se(); se(); se(); se(); se(); - se(); se(); se(); se(); se(); - se(); se(); se(); se(); se(); - se(); se(); se(); se(); se(); - se(); se(); se(); se(); se(); - se(); se(); se(); se(); se(); - se(); se(); se(); + se("a1"); se("a2"); se("a3"); se("a4"); + se("b1"); se("b2"); se("b3"); + se("c1"); se("c2"); + se("d1"); se("d2"); + se("e1"); se("e2"); + se("f1"); se("f2"); se("f3"); se("f4"); + se("g1_1"); se("g1_2"); se("g2_1"); se("g2_2"); + se("g3_1"); se("g3_2"); se("g4_1"); se("g4_2"); + se("h1_1"); se("h1_2"); se("h2_1"); se("h2_2"); + se("h3_1"); se("h3_2"); se("h4_1"); se("h4_2"); } function test2() { diff --git a/js/js.translator/testData/js-optimizer/ineffective-statement-elimination/binary.original.js b/js/js.translator/testData/js-optimizer/ineffective-statement-elimination/binary.original.js index 44d6d6b45a8..b6462f9e1c7 100644 --- a/js/js.translator/testData/js-optimizer/ineffective-statement-elimination/binary.original.js +++ b/js/js.translator/testData/js-optimizer/ineffective-statement-elimination/binary.original.js @@ -10,20 +10,20 @@ function se2(value) { } function test1() { - var $a = (se() - se() + se()) * se(); - var $b = se() % se() / se(); - var $c = se() >> se(); - var $d = se() << se(); - var $e = se() >>> se(); - var $f = se() | se() & se() ^ se(); - var $g1 = se() == se(); - var $g2 = se() === se(); - var $g3 = se() != se(); - var $g4 = se() !== se(); - var $h1 = se() > se(); - var $h2 = se() >= se(); - var $h3 = se() < se(); - var $h4 = se() <= se(); + var $a = (se("a1") - se("a2") + se("a3")) * se("a4"); + var $b = se("b1") % se("b2") / se("b3"); + var $c = se("c1") >> se("c2"); + var $d = se("d1") << se("d2"); + var $e = se("e1") >>> se("e2"); + var $f = se("f1") | se("f2") & se("f3") ^ se("f4"); + var $g1 = se("g1_1") == se("g1_2"); + var $g2 = se("g2_1") === se("g2_2"); + var $g3 = se("g3_1") != se("g3_2"); + var $g4 = se("g4_1") !== se("g4_2"); + var $h1 = se("h1_1") > se("h1_2"); + var $h2 = se("h2_1") >= se("h2_2"); + var $h3 = se("h3_1") < se("h3_2"); + var $h4 = se("h4_1") <= se("h4_2"); } function test2() { diff --git a/js/js.translator/testData/js-optimizer/ineffective-statement-elimination/parameters.optimized.js b/js/js.translator/testData/js-optimizer/ineffective-statement-elimination/parameters.optimized.js new file mode 100644 index 00000000000..9d93913924e --- /dev/null +++ b/js/js.translator/testData/js-optimizer/ineffective-statement-elimination/parameters.optimized.js @@ -0,0 +1,16 @@ +var log = ""; + +function se(x) { + log += x; + return x; +} + +function test(param) { + se("test:" + param); +} + +function box() { + test(23); + if (log != "test:23") return "fail: " + log; + return "OK"; +} \ No newline at end of file diff --git a/js/js.translator/testData/js-optimizer/ineffective-statement-elimination/parameters.original.js b/js/js.translator/testData/js-optimizer/ineffective-statement-elimination/parameters.original.js new file mode 100644 index 00000000000..982d7a21634 --- /dev/null +++ b/js/js.translator/testData/js-optimizer/ineffective-statement-elimination/parameters.original.js @@ -0,0 +1,16 @@ +var log = ""; + +function se(x) { + log += x; + return x; +} + +function test(param) { + var $tmp = param + se("test:" + param); +} + +function box() { + test(23); + if (log != "test:23") return "fail: " + log; + return "OK"; +} \ No newline at end of file