diff --git a/js/js.inliner/src/org/jetbrains/kotlin/js/inline/clean/TemporaryVariableElimination.kt b/js/js.inliner/src/org/jetbrains/kotlin/js/inline/clean/TemporaryVariableElimination.kt index bca0b7921bb..4a9f5b9e5d3 100644 --- a/js/js.inliner/src/org/jetbrains/kotlin/js/inline/clean/TemporaryVariableElimination.kt +++ b/js/js.inliner/src/org/jetbrains/kotlin/js/inline/clean/TemporaryVariableElimination.kt @@ -130,6 +130,9 @@ internal class TemporaryVariableElimination(private val function: JsFunction) { temporary += name } } + else { + super.visitExpressionStatement(x) + } return } super.visitExpressionStatement(x) diff --git a/js/js.tests/test/org/jetbrains/kotlin/js/test/optimizer/TemporaryVariableEliminationTest.kt b/js/js.tests/test/org/jetbrains/kotlin/js/test/optimizer/TemporaryVariableEliminationTest.kt index 00fd61afdaf..cc4b1315d4b 100644 --- a/js/js.tests/test/org/jetbrains/kotlin/js/test/optimizer/TemporaryVariableEliminationTest.kt +++ b/js/js.tests/test/org/jetbrains/kotlin/js/test/optimizer/TemporaryVariableEliminationTest.kt @@ -40,4 +40,6 @@ class TemporaryVariableEliminationTest : BasicOptimizerTest("temporary-variable" @Test fun innerExpressionProcessed() = box() @Test fun transitiveNotConsideredTrivial() = box() + + @Test fun assignmentToNonLocal() = box() } \ No newline at end of file diff --git a/js/js.translator/testData/js-optimizer/temporary-variable/assignmentToNonLocal.optimized.js b/js/js.translator/testData/js-optimizer/temporary-variable/assignmentToNonLocal.optimized.js new file mode 100644 index 00000000000..6129dc7799a --- /dev/null +++ b/js/js.translator/testData/js-optimizer/temporary-variable/assignmentToNonLocal.optimized.js @@ -0,0 +1,9 @@ +var result = ""; + +function box() { + var $tmp; + $tmp = result; + result += "fail"; + result = $tmp + "OK"; + return result; +} \ No newline at end of file diff --git a/js/js.translator/testData/js-optimizer/temporary-variable/assignmentToNonLocal.original.js b/js/js.translator/testData/js-optimizer/temporary-variable/assignmentToNonLocal.original.js new file mode 100644 index 00000000000..6129dc7799a --- /dev/null +++ b/js/js.translator/testData/js-optimizer/temporary-variable/assignmentToNonLocal.original.js @@ -0,0 +1,9 @@ +var result = ""; + +function box() { + var $tmp; + $tmp = result; + result += "fail"; + result = $tmp + "OK"; + return result; +} \ No newline at end of file