diff options
| author | Michael Williamson <mike@zwobble.org> | 2015-10-31 16:07:19 +0000 |
|---|---|---|
| committer | Michael Williamson <mike@zwobble.org> | 2015-10-31 16:07:19 +0000 |
| commit | ad4903f04c757779b2e9a875298ef8418cb140b4 (patch) | |
| tree | 49c28509587633d484e6fbcdd8537e15e854a567 /src/main/java/org/zwobble/couscous/interpreter/Interpreter.java | |
| parent | 4e13a3a626f630eb1031f32b1c3405cbf40952bc (diff) | |
Support equality on reference types
Diffstat (limited to 'src/main/java/org/zwobble/couscous/interpreter/Interpreter.java')
| -rw-r--r-- | src/main/java/org/zwobble/couscous/interpreter/Interpreter.java | 24 |
1 files changed, 10 insertions, 14 deletions
diff --git a/src/main/java/org/zwobble/couscous/interpreter/Interpreter.java b/src/main/java/org/zwobble/couscous/interpreter/Interpreter.java index e5f6482..95510cd 100644 --- a/src/main/java/org/zwobble/couscous/interpreter/Interpreter.java +++ b/src/main/java/org/zwobble/couscous/interpreter/Interpreter.java @@ -2,14 +2,12 @@ package org.zwobble.couscous.interpreter; import java.util.List; import java.util.Optional; -import java.util.stream.Collectors; + import org.zwobble.couscous.ast.TypeName; -import org.zwobble.couscous.ast.ExpressionNode; +import org.zwobble.couscous.interpreter.values.ConcreteType; import org.zwobble.couscous.interpreter.values.InterpreterValue; + import com.google.common.collect.ImmutableMap; -import static org.zwobble.couscous.ast.LiteralNode.literal; -import static org.zwobble.couscous.ast.StaticMethodCallNode.staticMethodCall; -import static org.zwobble.couscous.interpreter.Evaluator.eval; public class Interpreter { private Project project; @@ -19,14 +17,12 @@ public class Interpreter { } public InterpreterValue run(TypeName className, String methodName, List<InterpreterValue> arguments) { - List<ExpressionNode> argumentExpressions = arguments.stream() - .map(argument -> literal(argument.toPrimitiveValue().get())) - .collect(Collectors.toList()); - return eval( - new Environment( - project, - Optional.empty(), - ImmutableMap.of()), - staticMethodCall(className, methodName, argumentExpressions)); + final Environment environment = new Environment( + project, + Optional.empty(), + ImmutableMap.of()); + + ConcreteType clazz = environment.findClass(className); + return clazz.callStaticMethod(environment, methodName, arguments); } }
\ No newline at end of file |
