diff options
author | Stuart Halloway <stu@thinkrelevance.com> | 2010-05-27 23:00:45 -0400 |
---|---|---|
committer | Stuart Halloway <stu@thinkrelevance.com> | 2010-05-28 07:53:42 -0400 |
commit | d694d6d45fb46195ae4de01aab9a2b9f9c06355f (patch) | |
tree | 3932020284d3862ac27bc2f6f2a2ff4b41a13cca /src | |
parent | b2f9b4413ed0a7a299a286663e07c26445db013b (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.clj | 10 |
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"))))) |