From 5eafcf8cb10546916d4b38c3208ebfdfafff93e4 Mon Sep 17 00:00:00 2001 From: Michael Williamson Date: Wed, 6 Jan 2016 07:48:18 +0000 Subject: Tidy up ConcreteType.fromNode --- .../couscous/interpreter/values/ConcreteType.java | 34 +++++++++++++--------- 1 file changed, 20 insertions(+), 14 deletions(-) (limited to 'src/main/java') diff --git a/src/main/java/org/zwobble/couscous/interpreter/values/ConcreteType.java b/src/main/java/org/zwobble/couscous/interpreter/values/ConcreteType.java index c053739..157bb41 100644 --- a/src/main/java/org/zwobble/couscous/interpreter/values/ConcreteType.java +++ b/src/main/java/org/zwobble/couscous/interpreter/values/ConcreteType.java @@ -72,20 +72,26 @@ public class ConcreteType { } public static ConcreteType fromNode(ClassNode classNode) { - final java.util.Map fields = classNode.getFields().stream().collect(toMap(field -> field.getName(), field -> new FieldValue(field.getName(), field.getType()))); - final org.zwobble.couscous.interpreter.values.MethodValue constructor = new MethodValue(getArgumentTypes(classNode.getConstructor().getArguments()), (environment, arguments) -> Executor.callMethod(environment, classNode.getConstructor(), Optional.of(arguments.getReceiver()), arguments.getPositionalArguments())); - final java.util.Map methods = classNode.getMethods().stream().filter(method -> !method.isStatic()).collect(toMap(method -> method.getName(), method -> { - List argumentTypes = getArgumentTypes(method.getArguments()); - return new MethodValue(argumentTypes, (environment, arguments) -> { - return Executor.callMethod(environment, method, Optional.of(arguments.getReceiver()), arguments.getPositionalArguments()); - }); - })); - final java.util.Map staticMethods = classNode.getMethods().stream().filter(method -> method.isStatic()).collect(toMap(method -> method.getName(), method -> { - List argumentTypes = getArgumentTypes(method.getArguments()); - return new StaticMethodValue(argumentTypes, (environment, arguments) -> { - return Executor.callMethod(environment, method, Optional.empty(), arguments); - }); - })); + Map fields = classNode.getFields().stream().collect(toMap(field -> field.getName(), field -> new FieldValue(field.getName(), field.getType()))); + MethodValue constructor = new MethodValue(getArgumentTypes(classNode.getConstructor().getArguments()), (environment, arguments) -> Executor.callMethod(environment, classNode.getConstructor(), Optional.of(arguments.getReceiver()), arguments.getPositionalArguments())); + Map methods = classNode.getMethods() + .stream() + .filter(method -> !method.isStatic()) + .collect(toMap(method -> method.getName(), method -> { + List argumentTypes = getArgumentTypes(method.getArguments()); + return new MethodValue(argumentTypes, (environment, arguments) -> { + return Executor.callMethod(environment, method, Optional.of(arguments.getReceiver()), arguments.getPositionalArguments()); + }); + })); + Map staticMethods = classNode.getMethods() + .stream() + .filter(method -> method.isStatic()) + .collect(toMap(method -> method.getName(), method -> { + List argumentTypes = getArgumentTypes(method.getArguments()); + return new StaticMethodValue(argumentTypes, (environment, arguments) -> { + return Executor.callMethod(environment, method, Optional.empty(), arguments); + }); + })); return new ConcreteType(classNode.getName(), classNode.getSuperTypes(), fields, constructor, methods, staticMethods); } -- cgit v1.2.3