File tree 2 files changed +14
-4
lines changed
2 files changed +14
-4
lines changed Original file line number Diff line number Diff line change 6070
6070
[& args]
6071
6071
(apply load-libs :require args))
6072
6072
6073
+ (defn requiring-resolve
6074
+ " Resolves namespace-qualified sym per 'resolve'. If initial resolve
6075
+ fails, attempts to require sym's namespace and retries."
6076
+ {:added " 1.10" }
6077
+ [sym]
6078
+ (if (qualified-symbol? sym)
6079
+ (or (resolve sym)
6080
+ (do (-> sym namespace symbol require )
6081
+ (resolve sym)))
6082
+ (throw (IllegalArgumentException. (str " Not a qualified symbol: " sym)))))
6083
+
6073
6084
(defn use
6074
6085
" Like 'require, but also refers to each lib's namespace using
6075
6086
clojure.core/refer. Use :use in the ns macro in preference to calling
Original file line number Diff line number Diff line change 8
8
9
9
(ns clojure.datafy
10
10
^{:doc " Functions to turn objects into data. Alpha, subject to change" }
11
- (:require [clojure.core.protocols :as p]
12
- [clojure.reflect :as refl]))
11
+ (:require [clojure.core.protocols :as p]))
13
12
14
13
(set! *warn-on-reflection* true )
15
14
59
58
60
59
java.lang.Class
61
60
(datafy [c]
62
- (let [{:keys [members] :as ret} (refl /reflect c)]
63
- (assoc ret :name (-> c .getName symbol) :members (->> members (group-by :name ) sortmap)))))
61
+ (let [{:keys [members] :as ret} (( requiring-resolve 'clojure.reflect /reflect) c)]
62
+ (assoc ret :name (-> c .getName symbol) :members (->> members (group-by :name ) sortmap)))))
You can’t perform that action at this time.
0 commit comments