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:
develar
2012-10-23 19:08:47 +04:00
committed by Zalim Bashorov
parent 67592829b6
commit 1462e5cb7f
6 changed files with 8 additions and 20 deletions
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
@@ -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);
}
@@ -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));