File tree Expand file tree Collapse file tree 2 files changed +18
-20
lines changed
Expand file tree Collapse file tree 2 files changed +18
-20
lines changed Original file line number Diff line number Diff line change 272272 [env sym role]
273273 (symbol (str (ns-qualify env sym) " $" (name role))))
274274
275+ (def ^:private _speced_vars (atom #{}))
276+
277+ (defmacro speced-vars
278+ " Returns the set of vars whose namespace is in ns-syms AND
279+ whose vars have been speced with fdef. If no ns-syms are
280+ specified, return speced vars from all namespaces."
281+ [& ns-syms]
282+ (let [ns-match? (if (seq ns-syms)
283+ (set ns-syms)
284+ (constantly true ))]
285+ (reduce
286+ (fn [ret sym]
287+ (if (ns-match? (namespace sym))
288+ (conj ret (list 'var sym))
289+ ret))
290+ #{} @_speced_vars)))
291+
275292(defmacro fdef
276293 " Takes a symbol naming a function, and one or more of the following:
277294
305322 :sym symbol?)
306323 :ret symbol?)"
307324 [fn-sym & {:keys [args ret fn ] :as m}]
325+ (swap! _speced_vars conj (:name (resolve &env fn-sym)))
308326 (let [env &env
309327 qn (ns-qualify env fn-sym)]
310328 `(do ~@(reduce
Original file line number Diff line number Diff line change 341341 (swap! instrumented-vars dissoc v))
342342 v))
343343
344- ; (defn speced-vars
345- ; "Returns the set of vars whose namespace is in ns-syms AND
346- ; whose vars have been speced with fdef. If no ns-syms are
347- ; specified, return speced vars from all namespaces."
348- ; [& ns-syms]
349- ; (let [ns-match? (if (seq ns-syms)
350- ; (set (map str ns-syms))
351- ; (constantly true))]
352- ; (reduce-kv
353- ; (fn [s k _]
354- ; (if (c/and (symbol? k)
355- ; (re-find #"\$(args|ret)$" (name k))
356- ; (ns-match? (namespace k)))
357- ; (if-let [v (resolve (symbol (str/replace (str k) #"\$(args|ret)$" "")))]
358- ; (conj s v)
359- ; s)
360- ; s))
361- ; #{}
362- ; (registry))))
363- ;
364344; (defn instrument-ns
365345; "Call instrument for all speced-vars in namespaces named
366346; by ns-syms. Idempotent."
You can’t perform that action at this time.
0 commit comments