aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/org/zwobble/couscous/frontends
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2015-10-31 13:42:14 +0000
committerMichael Williamson <mike@zwobble.org>2015-10-31 13:42:14 +0000
commiteff6ead0d0089fae070c6dbb7c937353632322c1 (patch)
treef90ad6ebd4a6c25b234c8a116911c2f36dc0a551 /src/main/java/org/zwobble/couscous/frontends
parentc69e902235ea6a197c197c786c88f2bd15f10de3 (diff)
Support int inequality
Diffstat (limited to 'src/main/java/org/zwobble/couscous/frontends')
-rw-r--r--src/main/java/org/zwobble/couscous/frontends/java/JavaReader.java19
1 files changed, 13 insertions, 6 deletions
diff --git a/src/main/java/org/zwobble/couscous/frontends/java/JavaReader.java b/src/main/java/org/zwobble/couscous/frontends/java/JavaReader.java
index 99d6a7a..6c4c0c8 100644
--- a/src/main/java/org/zwobble/couscous/frontends/java/JavaReader.java
+++ b/src/main/java/org/zwobble/couscous/frontends/java/JavaReader.java
@@ -57,6 +57,7 @@ import com.google.common.collect.Lists;
import static java.util.Arrays.asList;
import static org.zwobble.couscous.ast.ExpressionStatementNode.expressionStatement;
import static org.zwobble.couscous.ast.LocalVariableDeclarationNode.localVariableDeclaration;
+import static org.zwobble.couscous.ast.MethodCallNode.methodCall;
import static org.zwobble.couscous.ast.VariableDeclaration.var;
import static org.zwobble.couscous.ast.VariableReferenceNode.reference;
@@ -261,12 +262,18 @@ public class JavaReader {
}
private static ExpressionNode readInfixExpression(InfixExpression expression) {
- JavaOperator operator = readOperator(expression.getOperator());
- return MethodCallNode.methodCall(
- readExpression(expression.getLeftOperand()),
- operator.methodName,
- asList(readExpression(expression.getRightOperand())),
- operator.returnValue);
+ final ExpressionNode left = readExpression(expression.getLeftOperand());
+ final ExpressionNode right = readExpression(expression.getRightOperand());
+ if (expression.getOperator() == Operator.NOT_EQUALS) {
+ return MethodCallNode.not(methodCall(left, "equals", asList(right), BooleanValue.REF));
+ } else {
+ JavaOperator operator = readOperator(expression.getOperator());
+ return MethodCallNode.methodCall(
+ left,
+ operator.methodName,
+ asList(right),
+ operator.returnValue);
+ }
}
private static JavaOperator readOperator(Operator operator) {