diff options
| author | Michael Williamson <mike@zwobble.org> | 2016-03-31 21:29:25 +0100 |
|---|---|---|
| committer | Michael Williamson <mike@zwobble.org> | 2016-03-31 21:29:25 +0100 |
| commit | 63186372abb41771c7a78c34ad3d17c458fa25e1 (patch) | |
| tree | 4e50f34109186c6e30e098511b8ce1be450400b9 /src/main/java/org/zwobble/couscous/interpreter/Evaluator.java | |
| parent | bb107372f059eadf3c2f0f576d464e4232f2ca33 (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.java | 11 |
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 |
