aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/org/zwobble/couscous/interpreter/Evaluator.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/org/zwobble/couscous/interpreter/Evaluator.java')
-rw-r--r--src/main/java/org/zwobble/couscous/interpreter/Evaluator.java5
1 files changed, 2 insertions, 3 deletions
diff --git a/src/main/java/org/zwobble/couscous/interpreter/Evaluator.java b/src/main/java/org/zwobble/couscous/interpreter/Evaluator.java
index 7aba54b..6a566c9 100644
--- a/src/main/java/org/zwobble/couscous/interpreter/Evaluator.java
+++ b/src/main/java/org/zwobble/couscous/interpreter/Evaluator.java
@@ -61,12 +61,11 @@ public class Evaluator implements ExpressionNodeVisitor<InterpreterValue> {
@Override
public InterpreterValue visit(MethodCallNode methodCall) {
val receiver = eval(methodCall.getReceiver());
+ val type = receiver.getType();
val arguments = methodCall.getArguments()
.stream()
.map(argument -> eval(argument))
.collect(Collectors.toList());
- val method = receiver.getMethod(methodCall.getMethodName())
- .orElseThrow(() -> new NoSuchMethod(methodCall.getMethodName()));
- return method.call(arguments);
+ return type.callMethod(receiver, methodCall.getMethodName(), arguments);
}
}