diff options
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 |
