summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRich Hickey <richhickey@gmail.com>2009-02-11 00:57:27 +0000
committerRich Hickey <richhickey@gmail.com>2009-02-11 00:57:27 +0000
commitfdd42d25f842b610f3eaacb117b3223743a7fb08 (patch)
treea99bc8c1005d2b3fe8272e2250a5f8f98550fbeb
parentbe3d2c8c8702d76bdb091a9f2c17c293f3eceb5d (diff)
catch method redef in proxy, patch from jbondeson
-rw-r--r--src/clj/clojure/core_proxy.clj5
1 files changed, 4 insertions, 1 deletions
diff --git a/src/clj/clojure/core_proxy.clj b/src/clj/clojure/core_proxy.clj
index 865a763e..f34acd24 100644
--- a/src/clj/clojure/core_proxy.clj
+++ b/src/clj/clojure/core_proxy.clj
@@ -290,7 +290,10 @@
meths (map (fn [[params & body]]
(cons (apply vector 'this params) body))
meths)]
- (recur (assoc fmap (name sym) (cons `fn meths)) (rest fs)))
+ (if-not (contains? fmap (name sym))
+ (recur (assoc fmap (name sym) (cons `fn meths)) (rest fs))
+ (throw (IllegalArgumentException.
+ (str "Method '" (name sym) "' redefined")))))
fmap)))
p#)))