aboutsummaryrefslogtreecommitdiff
path: root/src/test/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/test/java/org
parentc5f612e695f9fdc1773048899483f447507d3462 (diff)
Consider declarations in body when finding free variables
Diffstat (limited to 'src/test/java/org')
-rw-r--r--src/test/java/org/zwobble/couscous/tests/frontends/java/FreeVariablesTests.java14
1 files changed, 14 insertions, 0 deletions
diff --git a/src/test/java/org/zwobble/couscous/tests/frontends/java/FreeVariablesTests.java b/src/test/java/org/zwobble/couscous/tests/frontends/java/FreeVariablesTests.java
index 68cfda7..4461e7c 100644
--- a/src/test/java/org/zwobble/couscous/tests/frontends/java/FreeVariablesTests.java
+++ b/src/test/java/org/zwobble/couscous/tests/frontends/java/FreeVariablesTests.java
@@ -2,6 +2,7 @@ package org.zwobble.couscous.tests.frontends.java;
import org.junit.Test;
import org.zwobble.couscous.ast.FormalArgumentNode;
+import org.zwobble.couscous.ast.LocalVariableDeclarationNode;
import org.zwobble.couscous.ast.VariableDeclaration;
import org.zwobble.couscous.values.StringValue;
@@ -11,6 +12,8 @@ import static java.util.Arrays.asList;
import static java.util.Collections.emptyList;
import static org.junit.Assert.assertEquals;
import static org.zwobble.couscous.ast.FormalArgumentNode.formalArg;
+import static org.zwobble.couscous.ast.LiteralNode.literal;
+import static org.zwobble.couscous.ast.LocalVariableDeclarationNode.localVariableDeclaration;
import static org.zwobble.couscous.ast.VariableDeclaration.var;
import static org.zwobble.couscous.ast.VariableReferenceNode.reference;
import static org.zwobble.couscous.frontends.java.FreeVariables.findFreeVariables;
@@ -31,4 +34,15 @@ public class FreeVariablesTests {
asList(reference(declaration)));
assertEquals(emptyList(), freeVariables);
}
+
+ @Test
+ public void referenceIsNotFreeIfIsReferenceToLocalDefinedInBody() {
+ VariableDeclaration declaration = var("[id]", "[name]", StringValue.REF);
+ List<VariableDeclaration> freeVariables = findFreeVariables(
+ emptyList(),
+ asList(
+ localVariableDeclaration(declaration, literal("[value]")),
+ reference(declaration)));
+ assertEquals(emptyList(), freeVariables);
+ }
}