diff options
| author | Michael Williamson <mike@zwobble.org> | 2015-10-31 13:42:14 +0000 |
|---|---|---|
| committer | Michael Williamson <mike@zwobble.org> | 2015-10-31 13:42:14 +0000 |
| commit | eff6ead0d0089fae070c6dbb7c937353632322c1 (patch) | |
| tree | f90ad6ebd4a6c25b234c8a116911c2f36dc0a551 /src/main/java/org/zwobble/couscous/frontends | |
| parent | c69e902235ea6a197c197c786c88f2bd15f10de3 (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.java | 19 |
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) { |
