diff options
author | Rich Hickey <richhickey@gmail.com> | 2009-12-08 10:02:06 -0500 |
---|---|---|
committer | Rich Hickey <richhickey@gmail.com> | 2009-12-08 10:02:06 -0500 |
commit | 6d40a76e8a012909f2d2a594ce66a78318889799 (patch) | |
tree | 4bf1e7f9f8cb05ba6c1bf4c0516d761405d7db67 | |
parent | 84db0ab02d423f6db2b8bf3d852fd92ad259aab6 (diff) |
prevent local clearing of case test expr
-rw-r--r-- | src/jvm/clojure/lang/Compiler.java | 7 |
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()) |