aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/main/java/org/zwobble/couscous/ast/MethodCallNode.java2
-rw-r--r--src/main/java/org/zwobble/couscous/ast/Operator.java1
-rw-r--r--src/main/java/org/zwobble/couscous/backends/python/PrimitiveMethods.java1
-rw-r--r--src/main/java/org/zwobble/couscous/frontends/java/JavaOperators.java2
-rw-r--r--src/main/java/org/zwobble/couscous/frontends/java/JavaReader.java17
-rw-r--r--src/main/java/org/zwobble/couscous/interpreter/values/IntegerInterpreterValue.java2
6 files changed, 12 insertions, 13 deletions
diff --git a/src/main/java/org/zwobble/couscous/ast/MethodCallNode.java b/src/main/java/org/zwobble/couscous/ast/MethodCallNode.java
index 371ec2d..cce140f 100644
--- a/src/main/java/org/zwobble/couscous/ast/MethodCallNode.java
+++ b/src/main/java/org/zwobble/couscous/ast/MethodCallNode.java
@@ -48,7 +48,7 @@ public class MethodCallNode implements ExpressionNode {
}
public static ExpressionNode notEqual(ExpressionNode left, ExpressionNode right) {
- return not(booleanOperation(Operator.EQUALS.getMethodName(), left, right));
+ return booleanOperation(Operator.NOT_EQUALS.getMethodName(), left, right);
}
public static ExpressionNode greaterThan(ExpressionNode left, ExpressionNode right) {
diff --git a/src/main/java/org/zwobble/couscous/ast/Operator.java b/src/main/java/org/zwobble/couscous/ast/Operator.java
index de4df1b..549224c 100644
--- a/src/main/java/org/zwobble/couscous/ast/Operator.java
+++ b/src/main/java/org/zwobble/couscous/ast/Operator.java
@@ -8,6 +8,7 @@ public enum Operator {
MOD("mod", false),
EQUALS("equals", true),
+ NOT_EQUALS("notEquals", true),
GREATER_THAN("greaterThan", true),
GREATER_THAN_OR_EQUAL("greaterThanOrEqual", true),
LESS_THAN("lessThan", true),
diff --git a/src/main/java/org/zwobble/couscous/backends/python/PrimitiveMethods.java b/src/main/java/org/zwobble/couscous/backends/python/PrimitiveMethods.java
index db2cac0..47f3bb7 100644
--- a/src/main/java/org/zwobble/couscous/backends/python/PrimitiveMethods.java
+++ b/src/main/java/org/zwobble/couscous/backends/python/PrimitiveMethods.java
@@ -64,6 +64,7 @@ public class PrimitiveMethods {
asList(receiver, arguments.get(0))));
addMethod(methods, Operator.EQUALS.getMethodName(), "__eq__");
+ addMethod(methods, Operator.NOT_EQUALS.getMethodName(), "__ne__");
addMethod(methods, Operator.GREATER_THAN.getMethodName(), "__gt__");
addMethod(methods, Operator.GREATER_THAN_OR_EQUAL.getMethodName(), "__ge__");
addMethod(methods, Operator.LESS_THAN.getMethodName(), "__lt__");
diff --git a/src/main/java/org/zwobble/couscous/frontends/java/JavaOperators.java b/src/main/java/org/zwobble/couscous/frontends/java/JavaOperators.java
index 09d880f..f3a18f9 100644
--- a/src/main/java/org/zwobble/couscous/frontends/java/JavaOperators.java
+++ b/src/main/java/org/zwobble/couscous/frontends/java/JavaOperators.java
@@ -29,6 +29,8 @@ public class JavaOperators {
return Operator.MOD;
} else if (operator == InfixExpression.Operator.EQUALS) {
return Operator.EQUALS;
+ } else if (operator == InfixExpression.Operator.NOT_EQUALS) {
+ return Operator.NOT_EQUALS;
} else if (operator == InfixExpression.Operator.GREATER) {
return Operator.GREATER_THAN;
} else if (operator == InfixExpression.Operator.GREATER_EQUALS) {
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 02d14c1..dee5430 100644
--- a/src/main/java/org/zwobble/couscous/frontends/java/JavaReader.java
+++ b/src/main/java/org/zwobble/couscous/frontends/java/JavaReader.java
@@ -329,18 +329,11 @@ public class JavaReader {
private static ExpressionNode readInfixExpression(InfixExpression expression) {
TypeName operandType = typeOf(expression.getLeftOperand());
if (operandType.equals(IntegerValue.REF)) {
- if (expression.getOperator() == InfixExpression.Operator.NOT_EQUALS) {
- return MethodCallNode.not(readOperation(
- Operator.EQUALS,
- expression.getLeftOperand(),
- expression.getRightOperand()));
- } else {
- Operator operator = readOperator(expression.getOperator());
- return readOperation(
- operator,
- expression.getLeftOperand(),
- expression.getRightOperand());
- }
+ Operator operator = readOperator(expression.getOperator());
+ return readOperation(
+ operator,
+ expression.getLeftOperand(),
+ expression.getRightOperand());
} else {
ExpressionNode left = readExpression(ObjectValues.OBJECT, expression.getLeftOperand());
ExpressionNode right = readExpression(ObjectValues.OBJECT, expression.getRightOperand());
diff --git a/src/main/java/org/zwobble/couscous/interpreter/values/IntegerInterpreterValue.java b/src/main/java/org/zwobble/couscous/interpreter/values/IntegerInterpreterValue.java
index dce3cab..bbcf9c0 100644
--- a/src/main/java/org/zwobble/couscous/interpreter/values/IntegerInterpreterValue.java
+++ b/src/main/java/org/zwobble/couscous/interpreter/values/IntegerInterpreterValue.java
@@ -26,6 +26,8 @@ public final class IntegerInterpreterValue implements InterpreterValue {
infixReturningInteger((left, right) -> left % right))
.method(Operator.EQUALS.getMethodName(), asList(IntegerValue.REF),
infixReturningBoolean((left, right) -> left == right))
+ .method(Operator.NOT_EQUALS.getMethodName(), asList(IntegerValue.REF),
+ infixReturningBoolean((left, right) -> left != right))
.method(Operator.GREATER_THAN.getMethodName(), asList(IntegerValue.REF),
infixReturningBoolean((left, right) -> left > right))
.method(Operator.GREATER_THAN_OR_EQUAL.getMethodName(), asList(IntegerValue.REF),