File tree Expand file tree Collapse file tree 2 files changed +24
-9
lines changed Expand file tree Collapse file tree 2 files changed +24
-9
lines changed Original file line number Diff line number Diff line change 6060 (ana/resolve-var env s)))
6161 (symbol (str ana/*cljs-ns*) (str s))))
6262
63+ (defonce ^:private _speced_vars (atom #{}))
64+
65+ (defn speced-vars []
66+ @_speced_vars )
67+
6368(defmacro def
6469 " Given a namespace-qualified keyword or resolveable symbol k, and a
6570 spec, spec-name, predicate or regex-op makes an entry in the
6671 registry mapping k to the spec. Use nil to remove an entry in
6772 the registry for k."
6873 [k spec-form]
69- (let [k (if (symbol? k) (ns-qualify &env k) k)
74+ (let [k (if (symbol? k)
75+ (let [sym (ns-qualify &env k)]
76+ (swap! _speced_vars conj
77+ (vary-meta sym assoc :fdef-ns (-> &env :ns :name )))
78+ sym)
79+ k)
7080 form (res &env spec-form)]
7181 (swap! registry-ref (fn [r]
7282 (if (nil? form)
403413 (clojure.core/assert (not (empty? preds)))
404414 `(tuple-impl '~(mapv #(res &env %) preds) ~(vec preds)))
405415
406- (defonce ^:private _speced_vars (atom #{}))
407-
408- (defn speced-vars []
409- @_speced_vars )
410-
411416(defmacro fdef
412417 " Takes a symbol naming a function, and one or more of the following:
413418
441446 :sym symbol?)
442447 :ret symbol?)"
443448 [fn-sym & specs]
444- (swap! _speced_vars conj
445- (vary-meta (ns-qualify &env fn-sym)
446- assoc :fdef-ns (-> &env :ns :name )))
447449 `(cljs.spec.alpha/def ~fn-sym (fspec ~@specs)))
448450
449451(defmacro keys*
Original file line number Diff line number Diff line change 455455 (is (thrown? js/Error (defk :foo 1 )))
456456 (is (= [:foo " bar" ] (defk :foo " bar" ))))
457457
458+ (s/def ::add-spec
459+ (s/fspec :args (s/cat :n pos?)
460+ :ret number?))
461+
462+ (s/def add2 ::add-spec )
463+ (defn add2 [n]
464+ (+ n 2 ))
465+
466+ (st/instrument `add2)
467+
468+ (deftest cljs-3137
469+ (is (thrown? js/Error (add2 0 ))))
470+
458471(comment
459472
460473 (run-tests )
You can’t perform that action at this time.
0 commit comments