Fix JS source maps for increment expression used as statement
This commit is contained in:
@@ -54,6 +54,12 @@ public class JsLineNumberTestGenerated extends AbstractJsLineNumberTest {
|
|||||||
doTest(fileName);
|
doTest(fileName);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@TestMetadata("increment.kt")
|
||||||
|
public void testIncrement() throws Exception {
|
||||||
|
String fileName = KotlinTestUtils.navigationMetadata("js/js.translator/testData/lineNumbers/increment.kt");
|
||||||
|
doTest(fileName);
|
||||||
|
}
|
||||||
|
|
||||||
@TestMetadata("inlineReturn.kt")
|
@TestMetadata("inlineReturn.kt")
|
||||||
public void testInlineReturn() throws Exception {
|
public void testInlineReturn() throws Exception {
|
||||||
String fileName = KotlinTestUtils.navigationMetadata("js/js.translator/testData/lineNumbers/inlineReturn.kt");
|
String fileName = KotlinTestUtils.navigationMetadata("js/js.translator/testData/lineNumbers/inlineReturn.kt");
|
||||||
|
|||||||
+9
-7
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright 2010-2015 JetBrains s.r.o.
|
* Copyright 2010-2017 JetBrains s.r.o.
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
@@ -90,10 +90,11 @@ public abstract class IncrementTranslator extends AbstractTranslator {
|
|||||||
private JsExpression asPrefix() {
|
private JsExpression asPrefix() {
|
||||||
// code fragment: expr(a++)
|
// code fragment: expr(a++)
|
||||||
// generate: expr(a = a.inc(), a)
|
// generate: expr(a = a.inc(), a)
|
||||||
JsExpression getExpression = accessTranslator.translateAsGet();
|
JsExpression getExpression = accessTranslator.translateAsGet().source(expression);
|
||||||
JsExpression reassignment = variableReassignment(context().innerBlock(accessBlock), getExpression);
|
JsExpression reassignment = variableReassignment(context().innerBlock(accessBlock), getExpression)
|
||||||
|
.source(expression);
|
||||||
accessBlock.getStatements().add(JsAstUtils.asSyntheticStatement(reassignment));
|
accessBlock.getStatements().add(JsAstUtils.asSyntheticStatement(reassignment));
|
||||||
JsExpression getNewValue = accessTranslator.translateAsGet();
|
JsExpression getNewValue = accessTranslator.translateAsGet().source(expression);
|
||||||
|
|
||||||
JsExpression result;
|
JsExpression result;
|
||||||
if (accessBlock.getStatements().size() == 1) {
|
if (accessBlock.getStatements().size() == 1) {
|
||||||
@@ -112,10 +113,11 @@ public abstract class IncrementTranslator extends AbstractTranslator {
|
|||||||
private JsExpression asPostfix() {
|
private JsExpression asPostfix() {
|
||||||
// code fragment: expr(a++)
|
// code fragment: expr(a++)
|
||||||
// generate: expr( (t1 = a, t2 = t1, a = t1.inc(), t2) )
|
// generate: expr( (t1 = a, t2 = t1, a = t1.inc(), t2) )
|
||||||
TemporaryVariable t1 = context().declareTemporary(accessTranslator.translateAsGet());
|
TemporaryVariable t1 = context().declareTemporary(accessTranslator.translateAsGet().source(expression));
|
||||||
accessBlock.getStatements().add(t1.assignmentStatement());
|
accessBlock.getStatements().add(t1.assignmentStatement());
|
||||||
JsExpression variableReassignment = variableReassignment(context().innerBlock(accessBlock), t1.reference());
|
JsExpression variableReassignment = variableReassignment(context().innerBlock(accessBlock), t1.reference())
|
||||||
accessBlock.getStatements().add(JsAstUtils.asSyntheticStatement(variableReassignment));
|
.source(expression);
|
||||||
|
accessBlock.getStatements().add(JsAstUtils.asSyntheticStatement(variableReassignment.source(expression)));
|
||||||
|
|
||||||
JsExpression result;
|
JsExpression result;
|
||||||
if (accessBlock.getStatements().size() == 2) {
|
if (accessBlock.getStatements().size() == 2) {
|
||||||
|
|||||||
@@ -0,0 +1,11 @@
|
|||||||
|
fun foo(x: Int) {
|
||||||
|
var y = x
|
||||||
|
y++
|
||||||
|
println(y)
|
||||||
|
++y
|
||||||
|
println(y)
|
||||||
|
y += 2
|
||||||
|
println(y)
|
||||||
|
}
|
||||||
|
|
||||||
|
// LINES: 2 3 4 5 6 7 8
|
||||||
Reference in New Issue
Block a user