diff options
author | Stuart Halloway <stu@thinkrelevance.com> | 2010-05-23 15:37:17 -0400 |
---|---|---|
committer | Stuart Halloway <stu@thinkrelevance.com> | 2010-05-24 10:46:09 -0400 |
commit | 3da8a12112332d15a91b140fab5e535f0d2528e8 (patch) | |
tree | a8188c9bb1fd29a66251503e688ebbe69aac3d7b /src | |
parent | 8c9b0574a83f6c77576325b724c837cf4143eb33 (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.clj | 23 |
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 |