aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/org/zwobble/couscous/frontends
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2016-01-24 15:48:29 +0000
committerMichael Williamson <mike@zwobble.org>2016-01-24 15:48:29 +0000
commit3a3f549c3ff0e59bcefef29e1b870686aebec532 (patch)
treec0f0644a90ff65a22bd21ac2271f4db9894a0738 /src/main/java/org/zwobble/couscous/frontends
parent5941365d936f73e48381db5eb444345e5f358e75 (diff)
Introduce separate OperationNode that can be desugarred
Diffstat (limited to 'src/main/java/org/zwobble/couscous/frontends')
-rw-r--r--src/main/java/org/zwobble/couscous/frontends/java/JavaExpressionReader.java17
1 files changed, 9 insertions, 8 deletions
diff --git a/src/main/java/org/zwobble/couscous/frontends/java/JavaExpressionReader.java b/src/main/java/org/zwobble/couscous/frontends/java/JavaExpressionReader.java
index 86a3868..ba08fd8 100644
--- a/src/main/java/org/zwobble/couscous/frontends/java/JavaExpressionReader.java
+++ b/src/main/java/org/zwobble/couscous/frontends/java/JavaExpressionReader.java
@@ -14,6 +14,7 @@ import static org.zwobble.couscous.ast.CastNode.cast;
import static org.zwobble.couscous.ast.ConstructorCallNode.constructorCall;
import static org.zwobble.couscous.ast.LiteralNode.literal;
import static org.zwobble.couscous.ast.MethodCallNode.staticMethodCall;
+import static org.zwobble.couscous.ast.OperationNode.operation;
import static org.zwobble.couscous.ast.Operations.not;
import static org.zwobble.couscous.ast.TypeCoercionNode.typeCoercion;
import static org.zwobble.couscous.frontends.java.JavaOperators.readOperator;
@@ -270,10 +271,11 @@ public class JavaExpressionReader {
Operator operator = readOperator(expression.getOperator());
return AssignmentNode.assign(
(AssignableExpressionNode) readExpressionWithoutBoxing(expression.getOperand()),
- MethodCallNode.methodCall(
- readExpression(IntegerValue.REF, expression.getOperand()),
- operator.getMethodName(),
- list(literal(1)),
+ operation(
+ operator,
+ list(
+ readExpression(IntegerValue.REF, expression.getOperand()),
+ literal(1)),
IntegerValue.REF));
}
}
@@ -304,10 +306,9 @@ public class JavaExpressionReader {
private ExpressionNode readPrimitiveOperation(Operator operator, Expression leftJava, Expression rightJava) {
ExpressionNode left = readUnboxedExpression(leftJava);
ExpressionNode right = readUnboxedExpression(rightJava);
- return MethodCallNode.methodCall(
- left,
- operator.getMethodName(),
- list(right),
+ return operation(
+ operator,
+ list(left, right),
operator.isBoolean() ? BooleanValue.REF : left.getType());
}