From b81b68e59c6d34ccd109ec9aa517c4ead3c56ebd Mon Sep 17 00:00:00 2001 From: Michael Williamson Date: Wed, 6 Jan 2016 22:11:12 +0000 Subject: Implement overloading by argument type in Python backend --- .../values/BoxedIntegerInterpreterValue.java | 23 ++++++++++++++++++++++ 1 file changed, 23 insertions(+) (limited to 'src/main/java/org/zwobble/couscous/interpreter/values/BoxedIntegerInterpreterValue.java') 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 3ffa244..9bf6a51 100644 --- a/src/main/java/org/zwobble/couscous/interpreter/values/BoxedIntegerInterpreterValue.java +++ b/src/main/java/org/zwobble/couscous/interpreter/values/BoxedIntegerInterpreterValue.java @@ -8,6 +8,16 @@ import org.zwobble.couscous.values.StringValue; import static java.util.Arrays.asList; public class BoxedIntegerInterpreterValue { + public static ObjectInterpreterValue of(int value) { + return of(new IntegerInterpreterValue(value)); + } + + public static ObjectInterpreterValue of(IntegerInterpreterValue value) { + ObjectInterpreterValue obj = new ObjectInterpreterValue(TYPE); + obj.setField("value", value); + return obj; + } + public static final ConcreteType TYPE = ConcreteType.classBuilder("java.lang.Integer") .field("value", IntegerValue.REF) @@ -17,6 +27,12 @@ public class BoxedIntegerInterpreterValue { return new IntegerInterpreterValue(Integer.parseInt(value.getValue())); }) + .staticMethod("valueOf", asList(IntegerValue.REF), + (environment, arguments) -> { + IntegerInterpreterValue value = (IntegerInterpreterValue)arguments.get(0); + return of(value); + }) + .method(Operator.EQUALS.getMethodName(), asList(ObjectValues.OBJECT), (environment, arguments) -> { InterpreterValue right = arguments.getPositionalArguments().get(0); @@ -28,5 +44,12 @@ public class BoxedIntegerInterpreterValue { return new BooleanInterpreterValue(false); } }) + + .method("toString", asList(), + (environment, arguments) -> { + IntegerInterpreterValue value = (IntegerInterpreterValue)arguments.getReceiver().getField("value"); + return new StringInterpreterValue(Integer.toString(value.getValue())); + }) + .build(); } -- cgit v1.2.3