From 6c4c70d1302d88b8ee87451424cdfec0522ea88e Mon Sep 17 00:00:00 2001 From: Michael Williamson Date: Tue, 24 Nov 2015 21:12:50 +0000 Subject: Take single list of nodes when finding free variables --- .../java/org/zwobble/couscous/frontends/java/FreeVariables.java | 7 ++----- src/main/java/org/zwobble/couscous/frontends/java/JavaReader.java | 5 +++-- 2 files changed, 5 insertions(+), 7 deletions(-) (limited to 'src/main') diff --git a/src/main/java/org/zwobble/couscous/frontends/java/FreeVariables.java b/src/main/java/org/zwobble/couscous/frontends/java/FreeVariables.java index bd55979..99cc9b4 100644 --- a/src/main/java/org/zwobble/couscous/frontends/java/FreeVariables.java +++ b/src/main/java/org/zwobble/couscous/frontends/java/FreeVariables.java @@ -12,13 +12,10 @@ import static org.zwobble.couscous.util.Casts.tryCast; import static org.zwobble.couscous.util.ExtraStreams.toStream; public class FreeVariables { - public static List findFreeVariables(List formalArguments, List body) { + public static List findFreeVariables(List body) { Stream referencedDeclarations = body.stream() .flatMap(FreeVariables::findReferencedDeclarations); - Stream declarations = Stream.concat( - formalArguments.stream() - .map(argument -> argument.getDeclaration()), - body.stream().flatMap(FreeVariables::findDeclarations)); + Stream declarations = body.stream().flatMap(FreeVariables::findDeclarations); return Sets.difference( referencedDeclarations.collect(Collectors.toSet()), declarations.collect(Collectors.toSet())).stream().collect(Collectors.toList()); diff --git a/src/main/java/org/zwobble/couscous/frontends/java/JavaReader.java b/src/main/java/org/zwobble/couscous/frontends/java/JavaReader.java index 0d04d02..8ca1a5f 100644 --- a/src/main/java/org/zwobble/couscous/frontends/java/JavaReader.java +++ b/src/main/java/org/zwobble/couscous/frontends/java/JavaReader.java @@ -49,8 +49,9 @@ public class JavaReader { String className = generateClassName(expression); LambdaDeclarationAdaptor lambda = new LambdaDeclarationAdaptor(expression); List freeVariables = findFreeVariables( - lambda.getFormalArguments().collect(Collectors.toList()), - lambda.getBody()); + Stream.concat( + lambda.getFormalArguments(), + lambda.getBody().stream()).collect(Collectors.toList())); ClassNode classNode = new ClassNodeBuilder(className) .constructor(buildConstructor(TypeName.of(className), freeVariables)) -- cgit v1.2.3