diff --git a/js/js.tests/test/org/jetbrains/kotlin/js/test/JsLineNumberTestGenerated.java b/js/js.tests/test/org/jetbrains/kotlin/js/test/JsLineNumberTestGenerated.java index 30d28f753d0..fe7fd587899 100644 --- a/js/js.tests/test/org/jetbrains/kotlin/js/test/JsLineNumberTestGenerated.java +++ b/js/js.tests/test/org/jetbrains/kotlin/js/test/JsLineNumberTestGenerated.java @@ -258,6 +258,12 @@ public class JsLineNumberTestGenerated extends AbstractJsLineNumberTest { doTest(fileName); } + @TestMetadata("whenEntryWithMultipleConditions.kt") + public void testWhenEntryWithMultipleConditions() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("js/js.translator/testData/lineNumbers/whenEntryWithMultipleConditions.kt"); + doTest(fileName); + } + @TestMetadata("whenIn.kt") public void testWhenIn() throws Exception { String fileName = KotlinTestUtils.navigationMetadata("js/js.translator/testData/lineNumbers/whenIn.kt"); diff --git a/js/js.translator/src/org/jetbrains/kotlin/js/translate/expression/WhenTranslator.java b/js/js.translator/src/org/jetbrains/kotlin/js/translate/expression/WhenTranslator.java index 296eff1c1a2..5dddd5998ee 100644 --- a/js/js.translator/src/org/jetbrains/kotlin/js/translate/expression/WhenTranslator.java +++ b/js/js.translator/src/org/jetbrains/kotlin/js/translate/expression/WhenTranslator.java @@ -74,6 +74,7 @@ public final class WhenTranslator extends AbstractTranslator { if (resultIf == null) { currentIf = JsAstUtils.newJsIf(translateConditions(entry, context()), statement); + currentIf.setSource(entry); resultIf = currentIf; } else { @@ -83,6 +84,7 @@ public final class WhenTranslator extends AbstractTranslator { } JsBlock conditionsBlock = new JsBlock(); JsIf nextIf = JsAstUtils.newJsIf(translateConditions(entry, context().innerBlock(conditionsBlock)), statement); + nextIf.setSource(entry); JsStatement statementToAdd = JsAstUtils.mergeStatementInBlockIfNeeded(nextIf, conditionsBlock); currentIf.setElseStatement(statementToAdd); currentIf = nextIf; @@ -147,6 +149,7 @@ public final class WhenTranslator extends AbstractTranslator { JsNameRef result = (JsNameRef) rightExpression; JsIf ifStatement = JsAstUtils.newJsIf(leftExpression, JsAstUtils.assignment(result, new JsBooleanLiteral(true)).makeStmt(), rightContext.getCurrentBlock()); + ifStatement.setSource(condition); context.addStatementToCurrentBlock(ifStatement); return result; } diff --git a/js/js.translator/testData/lineNumbers/complexExpressionAsDefaultArgument.kt b/js/js.translator/testData/lineNumbers/complexExpressionAsDefaultArgument.kt index b505f72aa56..ac8cd7d3622 100644 --- a/js/js.translator/testData/lineNumbers/complexExpressionAsDefaultArgument.kt +++ b/js/js.translator/testData/lineNumbers/complexExpressionAsDefaultArgument.kt @@ -11,4 +11,4 @@ fun baz() = 1 fun bar() = 2 -// LINES: 8 3 3 2 2 3 4 4 4 5 5 2 8 8 10 10 10 12 12 12 \ No newline at end of file +// LINES: 8 3 3 2 2 4 3 4 4 4 5 5 2 8 8 10 10 10 12 12 12 \ No newline at end of file diff --git a/js/js.translator/testData/lineNumbers/whenEntryWithMultipleConditions.kt b/js/js.translator/testData/lineNumbers/whenEntryWithMultipleConditions.kt new file mode 100644 index 00000000000..446b8d4fec0 --- /dev/null +++ b/js/js.translator/testData/lineNumbers/whenEntryWithMultipleConditions.kt @@ -0,0 +1,21 @@ +fun box(x: Int) { + println( + when ( + x + ) { + 1, + 2, + 3 -> + 55 + + 4, + 5 -> + 66 + + else -> + 77 + } + ) +} + +// LINES: 19 4 4 3 6 4 6 4 7 4 8 9 9 11 4 11 4 12 13 13 16 16 2 \ No newline at end of file diff --git a/js/js.translator/testData/lineNumbers/whenIn.kt b/js/js.translator/testData/lineNumbers/whenIn.kt index fd55cd0d5e3..ce220540660 100644 --- a/js/js.translator/testData/lineNumbers/whenIn.kt +++ b/js/js.translator/testData/lineNumbers/whenIn.kt @@ -13,4 +13,4 @@ fun foo(): Int = 23 fun bar(): IntRange = 1000..2000 -// LINES: 10 2 2 2 2 3 4 4 5 6 6 7 8 8 12 12 12 14 14 14 \ No newline at end of file +// LINES: 10 2 2 2 2 3 3 4 4 5 5 6 6 7 7 8 8 12 12 12 14 14 14 \ No newline at end of file diff --git a/js/js.translator/testData/lineNumbers/whenIs.kt b/js/js.translator/testData/lineNumbers/whenIs.kt index d7b4d93dfcb..218077725d7 100644 --- a/js/js.translator/testData/lineNumbers/whenIs.kt +++ b/js/js.translator/testData/lineNumbers/whenIs.kt @@ -13,4 +13,4 @@ open class A open class B : A() -// LINES: 10 2 2 2 2 3 4 4 5 6 6 8 8 12 * 14 14 \ No newline at end of file +// LINES: 10 2 2 2 2 3 3 4 4 5 5 6 6 8 8 12 * 14 14 \ No newline at end of file