aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/org/zwobble/couscous/interpreter/Evaluator.java
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2016-03-31 21:29:25 +0100
committerMichael Williamson <mike@zwobble.org>2016-03-31 21:29:25 +0100
commit63186372abb41771c7a78c34ad3d17c458fa25e1 (patch)
tree4e50f34109186c6e30e098511b8ce1be450400b9 /src/main/java/org/zwobble/couscous/interpreter/Evaluator.java
parentbb107372f059eadf3c2f0f576d464e4232f2ca33 (diff)
Roll type parameters into Arguments
Diffstat (limited to 'src/main/java/org/zwobble/couscous/interpreter/Evaluator.java')
-rw-r--r--src/main/java/org/zwobble/couscous/interpreter/Evaluator.java11
1 files changed, 6 insertions, 5 deletions
diff --git a/src/main/java/org/zwobble/couscous/interpreter/Evaluator.java b/src/main/java/org/zwobble/couscous/interpreter/Evaluator.java
index 5488506..bbc41d1 100644
--- a/src/main/java/org/zwobble/couscous/interpreter/Evaluator.java
+++ b/src/main/java/org/zwobble/couscous/interpreter/Evaluator.java
@@ -12,12 +12,12 @@ import org.zwobble.couscous.types.Type;
import org.zwobble.couscous.types.Types;
import java.util.List;
-import java.util.Optional;
import java.util.stream.Collectors;
import static org.zwobble.couscous.types.Types.erasure;
import static org.zwobble.couscous.util.Casts.tryCast;
import static org.zwobble.couscous.util.ExtraLists.eagerMap;
+import static org.zwobble.couscous.util.ExtraLists.list;
public class Evaluator implements ExpressionNodeMapper<InterpreterValue> {
public static InterpreterValue eval(Environment environment, ExpressionNode expression) {
@@ -102,16 +102,17 @@ public class Evaluator implements ExpressionNodeMapper<InterpreterValue> {
MethodSignature signature = methodCall.signature();
return evalReceiver(methodCall.getReceiver())
- .callMethod(environment, signature, new Arguments(arguments));
+ .callMethod(environment, signature, new Arguments(list(), arguments));
}
@Override
public InterpreterValue visit(ConstructorCallNode call) {
StaticReceiverValue clazz = environment.findClass(erasure(call.getType()));
List<InterpreterValue> arguments = evalArguments(call.getArguments());
- Optional<List<Type>> typeParameters = tryCast(ParameterizedType.class, call.getType())
- .map(type -> type.getParameters());
- return clazz.callConstructor(environment, typeParameters, new Arguments(arguments));
+ List<Type> typeParameters = tryCast(ParameterizedType.class, call.getType())
+ .map(type -> type.getParameters())
+ .orElse(list());
+ return clazz.callConstructor(environment, new Arguments(typeParameters, arguments));
}
@Override