From ed592452a35fd68191636e021f122d5e704d19f8 Mon Sep 17 00:00:00 2001 From: Alexey Andreev Date: Mon, 15 May 2017 13:24:02 +0300 Subject: [PATCH] Fix JS source maps for functions with expression body --- .../kotlin/js/test/JsLineNumberTestGenerated.java | 6 ++++++ .../kotlin/js/translate/utils/FunctionBodyTranslator.java | 3 ++- js/js.translator/testData/lineNumbers/closure.kt | 2 +- js/js.translator/testData/lineNumbers/coroutine.kt | 2 +- .../testData/lineNumbers/expressionAsFunctionBody.kt | 7 +++++++ 5 files changed, 17 insertions(+), 3 deletions(-) create mode 100644 js/js.translator/testData/lineNumbers/expressionAsFunctionBody.kt 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 18ee60fd347..eb9818e48f2 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 @@ -102,6 +102,12 @@ public class JsLineNumberTestGenerated extends AbstractJsLineNumberTest { doTest(fileName); } + @TestMetadata("expressionAsFunctionBody.kt") + public void testExpressionAsFunctionBody() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("js/js.translator/testData/lineNumbers/expressionAsFunctionBody.kt"); + doTest(fileName); + } + @TestMetadata("for.kt") public void testFor() throws Exception { String fileName = KotlinTestUtils.navigationMetadata("js/js.translator/testData/lineNumbers/for.kt"); diff --git a/js/js.translator/src/org/jetbrains/kotlin/js/translate/utils/FunctionBodyTranslator.java b/js/js.translator/src/org/jetbrains/kotlin/js/translate/utils/FunctionBodyTranslator.java index db89d45b9ef..b78a332d6d4 100644 --- a/js/js.translator/src/org/jetbrains/kotlin/js/translate/utils/FunctionBodyTranslator.java +++ b/js/js.translator/src/org/jetbrains/kotlin/js/translate/utils/FunctionBodyTranslator.java @@ -149,7 +149,8 @@ public final class FunctionBodyTranslator extends AbstractTranslator { node = JsAstUtils.charToBoxedChar((JsExpression) node); } - JsReturn jsReturn = new JsReturn((JsExpression)node); + JsReturn jsReturn = new JsReturn((JsExpression) node); + jsReturn.setSource(declaration); MetadataProperties.setReturnTarget(jsReturn, descriptor); return jsReturn; }); diff --git a/js/js.translator/testData/lineNumbers/closure.kt b/js/js.translator/testData/lineNumbers/closure.kt index ddfa7d64ddf..8beea4400d5 100644 --- a/js/js.translator/testData/lineNumbers/closure.kt +++ b/js/js.translator/testData/lineNumbers/closure.kt @@ -5,4 +5,4 @@ fun box(x: Int, y: Int): Int { return foo(y) } -// LINES: 2 4 2 5 \ No newline at end of file +// LINES: 2 2 4 2 5 \ No newline at end of file diff --git a/js/js.translator/testData/lineNumbers/coroutine.kt b/js/js.translator/testData/lineNumbers/coroutine.kt index b254540d7d4..8bb24b5a05f 100644 --- a/js/js.translator/testData/lineNumbers/coroutine.kt +++ b/js/js.translator/testData/lineNumbers/coroutine.kt @@ -14,4 +14,4 @@ suspend fun bar(): Unit { println(a + b) } -// LINES: 4 5 6 4 9 9 9 9 9 9 9 9 * 10 11 11 11 11 11 * 11 12 13 13 13 13 13 13 14 \ No newline at end of file +// LINES: 4 5 4 6 4 9 9 9 9 9 9 9 9 * 10 11 11 11 11 11 * 11 12 13 13 13 13 13 13 14 \ No newline at end of file diff --git a/js/js.translator/testData/lineNumbers/expressionAsFunctionBody.kt b/js/js.translator/testData/lineNumbers/expressionAsFunctionBody.kt new file mode 100644 index 00000000000..b6fa3159fce --- /dev/null +++ b/js/js.translator/testData/lineNumbers/expressionAsFunctionBody.kt @@ -0,0 +1,7 @@ +fun box() = + foo() + +fun foo() = + 23 + +// LINES: 1 2 4 5 \ No newline at end of file