JS backend: cleanup JsFor creation. Added source map for "for, while, break, continue, try".
#KT-927 in progress (cherry picked from commit 4533f64)
This commit is contained in:
Binary file not shown.
Binary file not shown.
@@ -377,14 +377,14 @@ public final class ExpressionVisitor extends TranslatorVisitor<JsNode> {
|
||||
@NotNull
|
||||
public JsNode visitBreakExpression(@NotNull JetBreakExpression expression,
|
||||
@NotNull TranslationContext context) {
|
||||
return new JsBreak(getTargetLabel(expression, context));
|
||||
return source(new JsBreak(getTargetLabel(expression, context)), expression);
|
||||
}
|
||||
|
||||
@Override
|
||||
@NotNull
|
||||
public JsNode visitContinueExpression(@NotNull JetContinueExpression expression,
|
||||
@NotNull TranslationContext context) {
|
||||
return new JsContinue(getTargetLabel(expression, context));
|
||||
return source(new JsContinue(getTargetLabel(expression, context)), expression);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -424,14 +424,14 @@ public final class ExpressionVisitor extends TranslatorVisitor<JsNode> {
|
||||
@NotNull
|
||||
public JsNode visitForExpression(@NotNull JetForExpression expression,
|
||||
@NotNull TranslationContext context) {
|
||||
return ForTranslator.translate(expression, context);
|
||||
return source(ForTranslator.translate(expression, context), expression);
|
||||
}
|
||||
|
||||
@Override
|
||||
@NotNull
|
||||
public JsNode visitTryExpression(@NotNull JetTryExpression expression,
|
||||
@NotNull TranslationContext context) {
|
||||
return TryTranslator.translate(expression, context);
|
||||
return source(TryTranslator.translate(expression, context), expression);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
+1
-1
@@ -78,7 +78,7 @@ public final class ArrayForTranslator extends ForTranslator {
|
||||
private JsBlock translate() {
|
||||
List<JsStatement> blockStatements = Lists.newArrayList();
|
||||
blockStatements.add(temporariesInitialization(loopRange, end).makeStmt());
|
||||
blockStatements.add(generateForExpression(getInitExpression(), getCondition(), getIncrementExpression(), getBody()));
|
||||
blockStatements.add(new JsFor(getInitExpression(), getCondition(), getIncrementExpression(), getBody()));
|
||||
return new JsBlock(blockStatements);
|
||||
}
|
||||
|
||||
|
||||
+3
-5
@@ -28,7 +28,8 @@ import org.jetbrains.k2js.translate.context.TranslationContext;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import static org.jetbrains.k2js.translate.utils.JsAstUtils.*;
|
||||
import static org.jetbrains.k2js.translate.utils.JsAstUtils.inequality;
|
||||
import static org.jetbrains.k2js.translate.utils.JsAstUtils.newVar;
|
||||
import static org.jetbrains.k2js.translate.utils.PsiUtils.getLoopRange;
|
||||
import static org.jetbrains.k2js.translate.utils.TemporariesUtils.temporariesInitialization;
|
||||
import static org.jetbrains.k2js.translate.utils.TranslationUtils.translateLeftExpression;
|
||||
@@ -79,10 +80,7 @@ public final class RangeLiteralForTranslator extends ForTranslator {
|
||||
private JsBlock translate() {
|
||||
List<JsStatement> blockStatements = Lists.newArrayList();
|
||||
blockStatements.add(temporariesInitialization(rangeEnd).makeStmt());
|
||||
blockStatements.add(generateForExpression(initExpression(),
|
||||
getCondition(),
|
||||
getIncrExpression(),
|
||||
translateBody(null)));
|
||||
blockStatements.add(new JsFor(initExpression(), getCondition(), getIncrExpression(), translateBody(null)));
|
||||
return new JsBlock(blockStatements);
|
||||
}
|
||||
|
||||
|
||||
@@ -150,16 +150,6 @@ public final class JsAstUtils {
|
||||
return equality(new JsPrefixOperation(JsUnaryOperator.TYPEOF, expression), string);
|
||||
}
|
||||
|
||||
@NotNull
|
||||
public static JsFor generateForExpression(@NotNull JsVars initExpression,
|
||||
@NotNull JsExpression condition,
|
||||
@NotNull JsExpression incrementExpression,
|
||||
@NotNull JsStatement body) {
|
||||
JsFor result = new JsFor(initExpression, condition, incrementExpression);
|
||||
result.setBody(body);
|
||||
return result;
|
||||
}
|
||||
|
||||
@NotNull
|
||||
public static JsVars newVar(@NotNull JsName name, @Nullable JsExpression expr) {
|
||||
return new JsVars(new JsVars.JsVar(name, expr));
|
||||
|
||||
Reference in New Issue
Block a user