aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/org/zwobble/couscous/interpreter/values/BoxedIntegerInterpreterValue.java
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2016-01-01 15:33:57 +0000
committerMichael Williamson <mike@zwobble.org>2016-01-01 15:33:57 +0000
commitfd0769bde1ffad49ca74a404f18aae5d7226c558 (patch)
tree64f055dd31d309dddfe4d7c11803d4c6dab1e161 /src/main/java/org/zwobble/couscous/interpreter/values/BoxedIntegerInterpreterValue.java
parent17384f8b7bb6151be3f033ba7e339d9edb59be55 (diff)
Get interpreter compiler tests working
Diffstat (limited to 'src/main/java/org/zwobble/couscous/interpreter/values/BoxedIntegerInterpreterValue.java')
-rw-r--r--src/main/java/org/zwobble/couscous/interpreter/values/BoxedIntegerInterpreterValue.java18
1 files changed, 17 insertions, 1 deletions
diff --git a/src/main/java/org/zwobble/couscous/interpreter/values/BoxedIntegerInterpreterValue.java b/src/main/java/org/zwobble/couscous/interpreter/values/BoxedIntegerInterpreterValue.java
index 458eca7..3ffa244 100644
--- a/src/main/java/org/zwobble/couscous/interpreter/values/BoxedIntegerInterpreterValue.java
+++ b/src/main/java/org/zwobble/couscous/interpreter/values/BoxedIntegerInterpreterValue.java
@@ -1,16 +1,32 @@
package org.zwobble.couscous.interpreter.values;
+import org.zwobble.couscous.ast.Operator;
+import org.zwobble.couscous.values.IntegerValue;
+import org.zwobble.couscous.values.ObjectValues;
import org.zwobble.couscous.values.StringValue;
import static java.util.Arrays.asList;
public class BoxedIntegerInterpreterValue {
public static final ConcreteType TYPE = ConcreteType.classBuilder("java.lang.Integer")
+ .field("value", IntegerValue.REF)
+
.staticMethod("parseInt", asList(StringValue.REF),
(environment, arguments) -> {
StringInterpreterValue value = (StringInterpreterValue)arguments.get(0);
return new IntegerInterpreterValue(Integer.parseInt(value.getValue()));
})
-
+
+ .method(Operator.EQUALS.getMethodName(), asList(ObjectValues.OBJECT),
+ (environment, arguments) -> {
+ InterpreterValue right = arguments.getPositionalArguments().get(0);
+ if (right.getType().getName().equals(ObjectValues.BOXED_INT)) {
+ IntegerInterpreterValue leftValue = (IntegerInterpreterValue)arguments.getReceiver().getField("value");
+ IntegerInterpreterValue rightValue = (IntegerInterpreterValue)right.getField("value");
+ return new BooleanInterpreterValue(leftValue.getValue() == rightValue.getValue());
+ } else {
+ return new BooleanInterpreterValue(false);
+ }
+ })
.build();
}