diff --git a/js/js.ast/src/org/jetbrains/kotlin/js/backend/JsToStringGenerationVisitor.java b/js/js.ast/src/org/jetbrains/kotlin/js/backend/JsToStringGenerationVisitor.java index 2d56153cf7f..454586d3d61 100644 --- a/js/js.ast/src/org/jetbrains/kotlin/js/backend/JsToStringGenerationVisitor.java +++ b/js/js.ast/src/org/jetbrains/kotlin/js/backend/JsToStringGenerationVisitor.java @@ -746,7 +746,7 @@ public class JsToStringGenerationVisitor extends JsVisitor { space(); } sourceLocationConsumer.pushSourceInfo(null); - accept(elseStatement); + accept(materialize(elseStatement)); sourceLocationConsumer.popSourceInfo(); if (!elseIf) { nestedPop(elseStatement); diff --git a/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/BoxJsTestGenerated.java b/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/BoxJsTestGenerated.java index ec3c4870c7d..d48dfe03aec 100644 --- a/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/BoxJsTestGenerated.java +++ b/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/BoxJsTestGenerated.java @@ -4574,6 +4574,12 @@ public class BoxJsTestGenerated extends AbstractBoxJsTest { runTest("js/js.translator/testData/box/inline/astCopy.kt"); } + @Test + @TestMetadata("blocksMaterialization.kt") + public void testBlocksMaterialization() throws Exception { + runTest("js/js.translator/testData/box/inline/blocksMaterialization.kt"); + } + @Test @TestMetadata("callFunction.kt") public void testCallFunction() throws Exception { diff --git a/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/ir/IrBoxJsTestGenerated.java b/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/ir/IrBoxJsTestGenerated.java index 228072b4cac..1cd2eefba9c 100644 --- a/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/ir/IrBoxJsTestGenerated.java +++ b/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/ir/IrBoxJsTestGenerated.java @@ -4952,6 +4952,12 @@ public class IrBoxJsTestGenerated extends AbstractIrBoxJsTest { runTest("js/js.translator/testData/box/inline/astCopy.kt"); } + @Test + @TestMetadata("blocksMaterialization.kt") + public void testBlocksMaterialization() throws Exception { + runTest("js/js.translator/testData/box/inline/blocksMaterialization.kt"); + } + @Test @TestMetadata("callFunction.kt") public void testCallFunction() throws Exception { diff --git a/js/js.translator/testData/box/inline/blocksMaterialization.kt b/js/js.translator/testData/box/inline/blocksMaterialization.kt new file mode 100644 index 00000000000..6b5c77af9db --- /dev/null +++ b/js/js.translator/testData/box/inline/blocksMaterialization.kt @@ -0,0 +1,27 @@ +// EXPECTED_REACHABLE_NODES: 1282 +package foo + +inline fun dangerCall() { + assertEquals("A", "A") + assertNotEquals("A", "A") +} + +fun box(): String { + if ("A" != "A") dangerCall() + + if ("A" == "A") { + // Nothing to do + } else dangerCall() + + while ("A" != "A") dangerCall() + + for (num in 0 until 0) dangerCall() + + when ("A") { + "A" -> {} + else -> dangerCall() + } + + return "OK" +} +