diff options
author | Rich Hickey <richhickey@gmail.com> | 2010-06-19 09:59:48 -0400 |
---|---|---|
committer | Rich Hickey <richhickey@gmail.com> | 2010-06-19 09:59:48 -0400 |
commit | 25165a9ccd1001fa7c4725a8219c4108803ae834 (patch) | |
tree | 6d4f1062b364041e1106cb9bd0e30a24af676aaa | |
parent | 310534b8e7e7f28c75bb122b4bf1bee320cdae67 (diff) |
restore hard error on primitive local recur mismatch
-rw-r--r-- | src/clj/clojure/pprint/cl_format.clj | 4 | ||||
-rw-r--r-- | src/jvm/clojure/lang/Compiler.java | 12 |
2 files changed, 8 insertions, 8 deletions
diff --git a/src/clj/clojure/pprint/cl_format.clj b/src/clj/clojure/pprint/cl_format.clj index c2189d0c..b5addeb8 100644 --- a/src/clj/clojure/pprint/cl_format.clj +++ b/src/clj/clojure/pprint/cl_format.clj @@ -836,7 +836,7 @@ Note this should only be used for the last one in the sequence" args (init-navigator arg-list)] (loop [count 0 args args - last-pos -1] + last-pos (num -1)] (if (and (not max-count) (= (:pos args) last-pos) (> count 1)) ;; TODO get the offset in here and call format exception (throw (RuntimeException. "%{ construct not consuming any arguments: Infinite loop!"))) @@ -882,7 +882,7 @@ Note this should only be used for the last one in the sequence" [param-clause navigator])] (loop [count 0 navigator navigator - last-pos -1] + last-pos (num -1)] (if (and (not max-count) (= (:pos navigator) last-pos) (> count 1)) ;; TODO get the offset in here and call format exception (throw (RuntimeException. "%@{ construct not consuming any arguments: Infinite loop!"))) diff --git a/src/jvm/clojure/lang/Compiler.java b/src/jvm/clojure/lang/Compiler.java index 311505cf..175ebbd7 100644 --- a/src/jvm/clojure/lang/Compiler.java +++ b/src/jvm/clojure/lang/Compiler.java @@ -5541,17 +5541,17 @@ public static class RecurExpr implements Expr{ } else { - if(true)//RT.booleanCast(RT.WARN_ON_REFLECTION.deref())) - //throw new IllegalArgumentException - RT.errPrintWriter().println - (source + ":" + line + +// if(true)//RT.booleanCast(RT.WARN_ON_REFLECTION.deref())) + throw new IllegalArgumentException +// RT.errPrintWriter().println + (//source + ":" + line + " recur arg for primitive local: " + lb.name + " is not matching primitive, had: " + (arg.hasJavaClass() ? arg.getJavaClass().getName():"Object") + ", needed: " + primc.getName()); - arg.emit(C.EXPRESSION, objx, gen); - HostExpr.emitUnboxArg(objx,gen,primc); +// arg.emit(C.EXPRESSION, objx, gen); +// HostExpr.emitUnboxArg(objx,gen,primc); } } catch(Exception e) |