From 0e48fe6a73c4b663ad9e291cc06c2dc6663d9142 Mon Sep 17 00:00:00 2001 From: Michael Williamson Date: Fri, 1 Jan 2016 11:25:15 +0000 Subject: Support integer equality with objects --- .../couscous/interpreter/values/IntegerInterpreterValue.java | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 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 b050442..da28bc5 100644 --- a/src/main/java/org/zwobble/couscous/interpreter/values/IntegerInterpreterValue.java +++ b/src/main/java/org/zwobble/couscous/interpreter/values/IntegerInterpreterValue.java @@ -7,6 +7,7 @@ import org.zwobble.couscous.ast.Operator; import org.zwobble.couscous.interpreter.Environment; import org.zwobble.couscous.interpreter.NoSuchField; import org.zwobble.couscous.values.IntegerValue; +import org.zwobble.couscous.values.ObjectValues; import org.zwobble.couscous.values.PrimitiveValue; import org.zwobble.couscous.values.PrimitiveValues; @@ -24,8 +25,15 @@ public final class IntegerInterpreterValue implements InterpreterValue { infixReturningInteger((left, right) -> left / right)) .method(Operator.MOD.getMethodName(), asList(IntegerValue.REF), infixReturningInteger((left, right) -> left % right)) - .method(Operator.EQUALS.getMethodName(), asList(IntegerValue.REF), - infixReturningBoolean(Integer::equals)) + .method(Operator.EQUALS.getMethodName(), asList(ObjectValues.OBJECT), + (environment, arguments) -> { + InterpreterValue right = arguments.getPositionalArguments().get(0); + if (right instanceof IntegerInterpreterValue) { + return new BooleanInterpreterValue(arguments.getReceiver().getValue() == ((IntegerInterpreterValue)right).getValue()); + } else { + return new BooleanInterpreterValue(false); + } + }) .method(Operator.NOT_EQUALS.getMethodName(), asList(IntegerValue.REF), infixReturningBoolean((left, right) -> !left.equals(right))) .method(Operator.GREATER_THAN.getMethodName(), asList(IntegerValue.REF), -- cgit v1.2.3