diff options
| author | Michael Williamson <mike@zwobble.org> | 2016-01-24 15:48:29 +0000 |
|---|---|---|
| committer | Michael Williamson <mike@zwobble.org> | 2016-01-24 15:48:29 +0000 |
| commit | 3a3f549c3ff0e59bcefef29e1b870686aebec532 (patch) | |
| tree | c0f0644a90ff65a22bd21ac2271f4db9894a0738 /src/main/java/org/zwobble/couscous/frontends | |
| parent | 5941365d936f73e48381db5eb444345e5f358e75 (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.java | 17 |
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()); } |
