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 272
272
[env sym role]
273
273
(symbol (str (ns-qualify env sym) " $" (name role))))
274
274
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
+
275
292
(defmacro fdef
276
293
" Takes a symbol naming a function, and one or more of the following:
277
294
305
322
:sym symbol?)
306
323
:ret symbol?)"
307
324
[fn-sym & {:keys [args ret fn ] :as m}]
325
+ (swap! _speced_vars conj (:name (resolve &env fn-sym)))
308
326
(let [env &env
309
327
qn (ns-qualify env fn-sym)]
310
328
`(do ~@(reduce
Original file line number Diff line number Diff line change 341
341
(swap! instrumented-vars dissoc v))
342
342
v))
343
343
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
- ;
364
344
; (defn instrument-ns
365
345
; "Call instrument for all speced-vars in namespaces named
366
346
; by ns-syms. Idempotent."
You can’t perform that action at this time.
0 commit comments