From 6e489900cb8ae09bc0d168e51cca1908e591b501 Mon Sep 17 00:00:00 2001 From: Alexey Andreev Date: Wed, 10 May 2017 18:04:38 +0300 Subject: [PATCH] Fix generation of JS source maps for long literals --- .../kotlin/js/test/JsLineNumberTestGenerated.java | 6 ++++++ .../kotlin/js/translate/general/Translation.java | 6 +++--- js/js.translator/testData/lineNumbers/longLiteral.kt | 8 ++++++++ 3 files changed, 17 insertions(+), 3 deletions(-) create mode 100644 js/js.translator/testData/lineNumbers/longLiteral.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 55597bf2328..f1cddae685f 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 @@ -90,6 +90,12 @@ public class JsLineNumberTestGenerated extends AbstractJsLineNumberTest { doTest(fileName); } + @TestMetadata("longLiteral.kt") + public void testLongLiteral() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("js/js.translator/testData/lineNumbers/longLiteral.kt"); + doTest(fileName); + } + @TestMetadata("multipleReferences.kt") public void testMultipleReferences() throws Exception { String fileName = KotlinTestUtils.navigationMetadata("js/js.translator/testData/lineNumbers/multipleReferences.kt"); diff --git a/js/js.translator/src/org/jetbrains/kotlin/js/translate/general/Translation.java b/js/js.translator/src/org/jetbrains/kotlin/js/translate/general/Translation.java index 0f257e11a4a..ecd033a2f80 100644 --- a/js/js.translator/src/org/jetbrains/kotlin/js/translate/general/Translation.java +++ b/js/js.translator/src/org/jetbrains/kotlin/js/translate/general/Translation.java @@ -101,7 +101,7 @@ public final class Translation { if (type != null) { if (KotlinBuiltIns.isLong(type) || (KotlinBuiltIns.isInt(type) && expression instanceof KtUnaryExpression)) { JsExpression constantResult = translateConstant(compileTimeValue, expression, context); - if (constantResult != null) return constantResult; + if (constantResult != null) return constantResult.source(expression); } } } @@ -186,7 +186,7 @@ public final class Translation { @NotNull JsBlock block ) { JsNode jsNode = translateExpression(expression, context, block); - if (jsNode instanceof JsExpression) { + if (jsNode instanceof JsExpression) { KotlinType expressionType = context.bindingContext().getType(expression); return unboxIfNeeded((JsExpression) jsNode, expressionType != null && KotlinBuiltIns.isCharOrNullableChar(expressionType)); } @@ -200,7 +200,7 @@ public final class Translation { } block.getStatements().add(convertToStatement(jsNode)); - return new JsNullLiteral(); + return new JsNullLiteral().source(expression); } @NotNull diff --git a/js/js.translator/testData/lineNumbers/longLiteral.kt b/js/js.translator/testData/lineNumbers/longLiteral.kt new file mode 100644 index 00000000000..3b57e4075c7 --- /dev/null +++ b/js/js.translator/testData/lineNumbers/longLiteral.kt @@ -0,0 +1,8 @@ +fun foo() { + println( + 23L) + println( + 0L) +} + +// LINES: 2 3 4 5 \ No newline at end of file