aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/org
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2015-11-24 21:08:12 +0000
committerMichael Williamson <mike@zwobble.org>2015-11-24 21:08:12 +0000
commit30e46a51c533a888e022cfda9c59c8c3dfe2663e (patch)
tree9470e584fbb9549b58bdf05ce1302685da60f468 /src/main/java/org
parentc5f612e695f9fdc1773048899483f447507d3462 (diff)
Consider declarations in body when finding free variables
Diffstat (limited to 'src/main/java/org')
-rw-r--r--src/main/java/org/zwobble/couscous/frontends/java/FreeVariables.java8
1 files changed, 4 insertions, 4 deletions
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 3e3c7c6..bd55979 100644
--- a/src/main/java/org/zwobble/couscous/frontends/java/FreeVariables.java
+++ b/src/main/java/org/zwobble/couscous/frontends/java/FreeVariables.java
@@ -15,10 +15,10 @@ public class FreeVariables {
public static List<VariableDeclaration> findFreeVariables(List<FormalArgumentNode> formalArguments, List<? extends Node> body) {
Stream<VariableDeclaration> referencedDeclarations = body.stream()
.flatMap(FreeVariables::findReferencedDeclarations);
- // TODO: consider nested arguments
- // Stream<VariableDeclaration> declarations = body.stream().flatMap(this::findDeclarations);
- Stream<VariableDeclaration> declarations = formalArguments.stream()
- .map(argument -> argument.getDeclaration());
+ Stream<VariableDeclaration> declarations = Stream.concat(
+ formalArguments.stream()
+ .map(argument -> argument.getDeclaration()),
+ body.stream().flatMap(FreeVariables::findDeclarations));
return Sets.difference(
referencedDeclarations.collect(Collectors.toSet()),
declarations.collect(Collectors.toSet())).stream().collect(Collectors.toList());