Skip to content

Commit 212fb9d

Browse files
author
dnolen
committed
instrument wip
1 parent c2831f2 commit 212fb9d

1 file changed

Lines changed: 13 additions & 6 deletions

File tree

src/main/cljs/cljs/spec/test.cljc

Lines changed: 13 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88

99
(ns cljs.spec.test
1010
(:require
11+
[cljs.util :refer [distinct-by]]
1112
[cljs.analyzer :as ana]
1213
[cljs.analyzer.api :as ana-api]
1314
[cljs.spec :as s]
@@ -99,13 +100,19 @@ Returns a collection of syms naming the vars instrumented."
99100
`(instrument ~sym-or-syms nil))
100101
([sym-or-syms opts]
101102
`(let [opts# ~opts]
102-
(into
103+
(reduce
104+
(fn [ret [_ f]]
105+
(let [sym (f)]
106+
(cond-> ret sym (conj sym))))
103107
[]
104-
(comp (filter (instrumentable-syms opts#))
105-
(distinct)
106-
(map #(instrument-1* % opts#))
107-
(remove nil?))
108-
(collectionize ~sym-or-syms)))))
108+
(->> (zipmap
109+
(collectionize ~sym-or-syms)
110+
~@(map
111+
(fn [sym]
112+
`(fn [] (instrument-1 ~sym opts#)))
113+
(collectionize ~sym-or-syms)))
114+
(filter #((instrumentable-syms opts#) (first %)))
115+
(distinct-by first))))))
109116

110117
(defmacro unstrument
111118
"Undoes instrument on the vars named by sym-or-syms, specified

0 commit comments

Comments
 (0)