summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorStuart Halloway <stu@thinkrelevance.com>2010-05-23 15:37:17 -0400
committerStuart Halloway <stu@thinkrelevance.com>2010-05-24 10:46:09 -0400
commit3da8a12112332d15a91b140fab5e535f0d2528e8 (patch)
treea8188c9bb1fd29a66251503e688ebbe69aac3d7b /src
parent8c9b0574a83f6c77576325b724c837cf4143eb33 (diff)
better error message on failed refer
Signed-off-by: Stuart Halloway <stu@thinkrelevance.com>
Diffstat (limited to 'src')
-rw-r--r--src/clj/clojure/core.clj23
1 files changed, 13 insertions, 10 deletions
diff --git a/src/clj/clojure/core.clj b/src/clj/clojure/core.clj
index 0a2a39ae..d1b4b8e4 100644
--- a/src/clj/clojure/core.clj
+++ b/src/clj/clojure/core.clj
@@ -3229,6 +3229,15 @@
[ns]
(filter-key val (partial instance? Class) (ns-map ns)))
+(defn ns-interns
+ "Returns a map of the intern mappings for the namespace."
+ {:added "1.0"}
+ [ns]
+ (let [ns (the-ns ns)]
+ (filter-key val (fn [^clojure.lang.Var v] (and (instance? clojure.lang.Var v)
+ (= ns (.ns v))))
+ (ns-map ns))))
+
(defn refer
"refers to all public vars of ns, subject to filters.
filters can include at most one each of:
@@ -3256,7 +3265,10 @@
(when-not (exclude sym)
(let [v (nspublics sym)]
(when-not v
- (throw (new java.lang.IllegalAccessError (str sym " is not public"))))
+ (throw (new java.lang.IllegalAccessError
+ (if (get (ns-interns ns) sym)
+ (str sym " is not public")
+ (str sym " does not exist")))))
(. *ns* (refer (or (rename sym) sym) v)))))))
(defn ns-refers
@@ -3268,15 +3280,6 @@
(not= ns (.ns v))))
(ns-map ns))))
-(defn ns-interns
- "Returns a map of the intern mappings for the namespace."
- {:added "1.0"}
- [ns]
- (let [ns (the-ns ns)]
- (filter-key val (fn [^clojure.lang.Var v] (and (instance? clojure.lang.Var v)
- (= ns (.ns v))))
- (ns-map ns))))
-
(defn alias
"Add an alias in the current namespace to another
namespace. Arguments are two symbols: the alias to be used, and