summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRich Hickey <richhickey@gmail.com>2009-12-08 10:02:06 -0500
committerRich Hickey <richhickey@gmail.com>2009-12-08 10:02:06 -0500
commit6d40a76e8a012909f2d2a594ce66a78318889799 (patch)
tree4bf1e7f9f8cb05ba6c1bf4c0516d761405d7db67
parent84db0ab02d423f6db2b8bf3d852fd92ad259aab6 (diff)
prevent local clearing of case test expr
-rw-r--r--src/jvm/clojure/lang/Compiler.java7
1 files changed, 4 insertions, 3 deletions
diff --git a/src/jvm/clojure/lang/Compiler.java b/src/jvm/clojure/lang/Compiler.java
index 0d67e769..22da75cb 100644
--- a/src/jvm/clojure/lang/Compiler.java
+++ b/src/jvm/clojure/lang/Compiler.java
@@ -6598,7 +6598,7 @@ static public class MethodParamExpr implements Expr, MaybePrimitiveExpr{
}
public static class CaseExpr extends UntypedExpr{
- public final Expr expr;
+ public final LocalBindingExpr expr;
public final int shift, mask, low, high;
public final Expr defaultExpr;
public final HashMap<Integer,Expr> tests;
@@ -6612,7 +6612,7 @@ public static class CaseExpr extends UntypedExpr{
final static Method equalsMethod = Method.getMethod("boolean equals(Object, Object)");
- public CaseExpr(int line, Expr expr, int shift, int mask, int low, int high, Expr defaultExpr,
+ public CaseExpr(int line, LocalBindingExpr expr, int shift, int mask, int low, int high, Expr defaultExpr,
HashMap<Integer,Expr> tests,HashMap<Integer,Expr> thens, boolean allKeywords){
this.expr = expr;
this.shift = shift;
@@ -6694,7 +6694,8 @@ public static class CaseExpr extends UntypedExpr{
HashMap<Integer,Expr> tests = new HashMap();
HashMap<Integer,Expr> thens = new HashMap();
- Expr testexpr = analyze(C.EXPRESSION, args.nth(0));
+ LocalBindingExpr testexpr = (LocalBindingExpr) analyze(C.EXPRESSION, args.nth(0));
+ testexpr.shouldClear = false;
PathNode branch = new PathNode(PATHTYPE.BRANCH, (PathNode) CLEAR_PATH.get());
for(Object o : ((Map)args.nth(6)).entrySet())