Slight changes to expression visitor logic.

This commit is contained in:
Pavel V. Talanov
2012-03-21 18:18:11 +04:00
parent 0cd839f044
commit 91f488fdf8
@@ -40,6 +40,7 @@ import org.jetbrains.k2js.translate.utils.mutator.AssignToExpressionMutator;
import java.util.List; import java.util.List;
import static org.jetbrains.k2js.translate.general.Translation.translateAsExpression;
import static org.jetbrains.k2js.translate.utils.BindingUtils.*; import static org.jetbrains.k2js.translate.utils.BindingUtils.*;
import static org.jetbrains.k2js.translate.utils.JsAstUtils.*; import static org.jetbrains.k2js.translate.utils.JsAstUtils.*;
import static org.jetbrains.k2js.translate.utils.PsiUtils.getObjectDeclarationName; import static org.jetbrains.k2js.translate.utils.PsiUtils.getObjectDeclarationName;
@@ -51,12 +52,6 @@ import static org.jetbrains.k2js.translate.utils.mutator.LastExpressionMutator.m
*/ */
public final class ExpressionVisitor extends TranslatorVisitor<JsNode> { public final class ExpressionVisitor extends TranslatorVisitor<JsNode> {
@NotNull
private JsExpression translateAsExpression(@NotNull JetExpression expression,
@NotNull TranslationContext context) {
return convertToExpression(expression.accept(this, context));
}
@Override @Override
@NotNull @NotNull
public JsNode visitConstantExpression(@NotNull JetConstantExpression expression, public JsNode visitConstantExpression(@NotNull JetConstantExpression expression,
@@ -69,21 +64,21 @@ public final class ExpressionVisitor extends TranslatorVisitor<JsNode> {
} }
Object value = compileTimeValue.getValue(); Object value = compileTimeValue.getValue();
if (value instanceof Integer) { if (value instanceof Integer) {
return context.program().getNumberLiteral((Integer) value); return context.program().getNumberLiteral((Integer)value);
} }
if (value instanceof Boolean) { if (value instanceof Boolean) {
return context.program().getBooleanLiteral((Boolean) value); return context.program().getBooleanLiteral((Boolean)value);
} }
//TODO: test //TODO: test
if (value instanceof Float) { if (value instanceof Float) {
return context.program().getNumberLiteral((Float) value); return context.program().getNumberLiteral((Float)value);
} }
if (value instanceof Double) { if (value instanceof Double) {
return context.program().getNumberLiteral((Double) value); return context.program().getNumberLiteral((Double)value);
} }
if (value instanceof String) { if (value instanceof String) {
return context.program().getStringLiteral((String) value); return context.program().getStringLiteral((String)value);
} }
if (value instanceof Character) { if (value instanceof Character) {
return context.program().getStringLiteral(value.toString()); return context.program().getStringLiteral(value.toString());
@@ -221,7 +216,7 @@ public final class ExpressionVisitor extends TranslatorVisitor<JsNode> {
if (expression == null) { if (expression == null) {
return null; return null;
} }
return translateAsExpression(expression, context); return convertToExpression(expression.accept(this, context));
} }
//NOTE: since JsWhile and JsDoWhile do not have an ancestor, cannot avoid duplication here //NOTE: since JsWhile and JsDoWhile do not have an ancestor, cannot avoid duplication here
@@ -268,7 +263,7 @@ public final class ExpressionVisitor extends TranslatorVisitor<JsNode> {
return null; return null;
} }
assert value instanceof String : "Compile time constant template should be a String constant."; assert value instanceof String : "Compile time constant template should be a String constant.";
String constantString = (String) value; String constantString = (String)value;
return context.program().getStringLiteral(constantString); return context.program().getStringLiteral(constantString);
} }
@@ -284,7 +279,6 @@ public final class ExpressionVisitor extends TranslatorVisitor<JsNode> {
public JsNode visitPrefixExpression(@NotNull JetPrefixExpression expression, public JsNode visitPrefixExpression(@NotNull JetPrefixExpression expression,
@NotNull TranslationContext context) { @NotNull TranslationContext context) {
return UnaryOperationTranslator.translate(expression, context); return UnaryOperationTranslator.translate(expression, context);
} }
@Override @Override
@@ -381,7 +375,7 @@ public final class ExpressionVisitor extends TranslatorVisitor<JsNode> {
@NotNull TranslationContext context) { @NotNull TranslationContext context) {
JsArrayLiteral result = new JsArrayLiteral(); JsArrayLiteral result = new JsArrayLiteral();
for (JetExpression entry : expression.getEntries()) { for (JetExpression entry : expression.getEntries()) {
result.getExpressions().add(Translation.translateAsExpression(entry, context)); result.getExpressions().add(translateAsExpression(entry, context));
} }
return result; return result;
} }