From cd0e8a654b6e88294c6284d0a6b0f33b14d10e05 Mon Sep 17 00:00:00 2001 From: Andrei Kleschinski Date: Fri, 22 Feb 2013 14:34:32 +0300 Subject: [PATCH] #CLJ-1169 proposed patch --- src/clj/clojure/core.clj | 12 ++++++------ src/jvm/clojure/lang/Compiler.java | 10 ++++++++++ 2 files changed, 16 insertions(+), 6 deletions(-) diff --git a/src/clj/clojure/core.clj b/src/clj/clojure/core.clj index f03c638..3001655 100644 --- a/src/clj/clojure/core.clj +++ b/src/clj/clojure/core.clj @@ -6720,17 +6720,17 @@ (first %) (throw (IllegalArgumentException. (if (seq? (first fdecl)) - (str "Invalid signature " + (str "Invalid signature \"" % - " should be a list") - (str "Parameter declaration " + "\" should be a list") + (str "Parameter declaration \"" % - " should be a vector"))))) + "\" should be a vector"))))) fdecl) bad-args (seq (remove #(vector? %) argdecls))] (when bad-args - (throw (IllegalArgumentException. (str "Parameter declaration " (first bad-args) - " should be a vector")))))) + (throw (IllegalArgumentException. (str "Parameter declaration \"" (first bad-args) + "\" should be a vector")))))) (defn with-redefs-fn "Temporarily redefines Vars during a call to func. Each val of diff --git a/src/jvm/clojure/lang/Compiler.java b/src/jvm/clojure/lang/Compiler.java index 7eda658..e067dc8 100644 --- a/src/jvm/clojure/lang/Compiler.java +++ b/src/jvm/clojure/lang/Compiler.java @@ -6472,6 +6472,16 @@ public static Object macroexpand1(Object x) { // hide the 2 extra params for a macro throw new ArityException(e.actual - 2, e.name); } + catch(Throwable e) + { + if(!(e instanceof CompilerException)) { + Integer line = (Integer) LINE.deref(); + Integer column = (Integer) COLUMN.deref(); + String source = (String) SOURCE.deref(); + throw new CompilerException(source, line, column, e); + } else + throw (CompilerException) e; + } } else { -- 1.7.7.1.msysgit.0