summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorStuart Halloway <stu@thinkrelevance.com>2010-05-27 23:00:45 -0400
committerStuart Halloway <stu@thinkrelevance.com>2010-05-28 07:53:42 -0400
commitd694d6d45fb46195ae4de01aab9a2b9f9c06355f (patch)
tree3932020284d3862ac27bc2f6f2a2ff4b41a13cca /src
parentb2f9b4413ed0a7a299a286663e07c26445db013b (diff)
place to hang defn error messages
Signed-off-by: Stuart Halloway <stu@thinkrelevance.com>
Diffstat (limited to 'src')
-rw-r--r--src/clj/clojure/core.clj10
1 files changed, 10 insertions, 0 deletions
diff --git a/src/clj/clojure/core.clj b/src/clj/clojure/core.clj
index 65b3bc2d..b3f364c6 100644
--- a/src/clj/clojure/core.clj
+++ b/src/clj/clojure/core.clj
@@ -191,10 +191,14 @@
with-meta (fn with-meta [^clojure.lang.IObj x m]
(. x (withMeta m))))
+(def ^{:private true :dynamic true}
+ assert-valid-fdecl (fn [fdecl]))
+
(def
^{:private true}
sigs
(fn [fdecl]
+ (assert-valid-fdecl fdecl)
(let [asig
(fn [fdecl]
(let [arglist (first fdecl)
@@ -5652,3 +5656,9 @@
(keepi (inc idx) (rest s))
(cons x (keepi (inc idx) (rest s)))))))))]
(keepi 0 coll))))
+
+(defn- ^{:dynamic true} assert-valid-fdecl
+ "A good fdecl looks like (([a] ...) ([a b] ...)) near the end of defn."
+ [fdecl]
+ (if-let [bad-args (seq (remove #(vector? %) (map first fdecl)))]
+ (throw (IllegalArgumentException. (str "Parameter declaration " (first bad-args) " should be a vector")))))