aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/org/zwobble/couscous/interpreter/values/IntegerInterpreterValue.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/org/zwobble/couscous/interpreter/values/IntegerInterpreterValue.java')
-rw-r--r--src/main/java/org/zwobble/couscous/interpreter/values/IntegerInterpreterValue.java16
1 files changed, 12 insertions, 4 deletions
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 3bcb41a..be58d56 100644
--- a/src/main/java/org/zwobble/couscous/interpreter/values/IntegerInterpreterValue.java
+++ b/src/main/java/org/zwobble/couscous/interpreter/values/IntegerInterpreterValue.java
@@ -4,8 +4,7 @@ import java.util.Optional;
import java.util.function.BiFunction;
import org.zwobble.couscous.ast.Operator;
-import org.zwobble.couscous.interpreter.Environment;
-import org.zwobble.couscous.interpreter.NoSuchField;
+import org.zwobble.couscous.interpreter.*;
import org.zwobble.couscous.values.IntegerValue;
import org.zwobble.couscous.values.ObjectValues;
import org.zwobble.couscous.values.PrimitiveValue;
@@ -29,11 +28,16 @@ public final class IntegerInterpreterValue implements InterpreterValue {
(environment, arguments) -> {
InterpreterValue right = arguments.getPositionalArguments().get(0);
if (right instanceof IntegerInterpreterValue) {
- return new BooleanInterpreterValue(arguments.getReceiver().getValue() == ((IntegerInterpreterValue)right).getValue());
+ return integerEquals(arguments, ((IntegerInterpreterValue)right));
} else {
return new BooleanInterpreterValue(false);
}
})
+ .method(Operator.EQUALS.getMethodName(), asList(IntegerValue.REF),
+ (environment, arguments) -> {
+ IntegerInterpreterValue right = (IntegerInterpreterValue)arguments.getPositionalArguments().get(0);
+ return integerEquals(arguments, right);
+ })
.method(Operator.NOT_EQUALS.getMethodName(), asList(IntegerValue.REF),
infixReturningBoolean((left, right) -> !left.equals(right)))
.method(Operator.GREATER_THAN.getMethodName(), asList(IntegerValue.REF),
@@ -45,7 +49,11 @@ public final class IntegerInterpreterValue implements InterpreterValue {
.method(Operator.LESS_THAN_OR_EQUAL.getMethodName(), asList(IntegerValue.REF),
infixReturningBoolean((left, right) -> left <= right))
.build();
-
+
+ private static BooleanInterpreterValue integerEquals(MethodCallArguments<IntegerInterpreterValue> arguments, IntegerInterpreterValue right) {
+ return new BooleanInterpreterValue(arguments.getReceiver().getValue() == right.getValue());
+ }
+
private static
BiFunction<Environment, MethodCallArguments<IntegerInterpreterValue>, InterpreterValue>
infixReturningInteger(BiFunction<Integer, Integer, Integer> func) {