diff --git a/feature-spec-alpha/babashka/impl/spec.clj b/feature-spec-alpha/babashka/impl/spec.clj index f195eb97..b96c2996 100644 --- a/feature-spec-alpha/babashka/impl/spec.clj +++ b/feature-spec-alpha/babashka/impl/spec.clj @@ -61,7 +61,13 @@ 'spec-impl (copy-var s/spec-impl sns) 'tuple (copy-var s/tuple sns) 'tuple-impl (copy-var s/tuple-impl sns) + 'coll-of (copy-var s/coll-of sns) 'conformer (copy-var s/conformer sns) + 'int-in (copy-var s/int-in sns) + 'int-in-range? (copy-var s/int-in-range? sns) + 'double-in (copy-var s/double-in sns) + 'inst-in (copy-var s/inst-in sns) + 'inst-in-range? (copy-var s/inst-in-range? sns) #_#_'explain-data (copy-var s/explain-data sns)}) #_:clj-kondo/ignore @@ -71,7 +77,9 @@ #_:clj-kondo/ignore (def gen-namespace - {'generate (copy-var gen/generate gns)}) + {'generate (copy-var gen/generate gns) + 'large-integer* (copy-var gen/large-integer* gns) + 'double* (copy-var gen/double* gns)}) ;; def-impl ;; -> spec? ;; OK diff --git a/src/babashka/impl/clojure/spec/alpha.clj b/src/babashka/impl/clojure/spec/alpha.clj index b8810982..5f21f837 100644 --- a/src/babashka/impl/clojure/spec/alpha.clj +++ b/src/babashka/impl/clojure/spec/alpha.clj @@ -593,7 +593,7 @@ See also - every, map-of" [pred & opts] (let [desc `(coll-of ~(res pred) ~@(res-kind opts))] - `(every ~pred ::conform-all true ::describe '~desc ~@opts))) + `(clojure.spec.alpha/every ~pred ::conform-all true ::describe '~desc ~@opts))) (defmacro map-of "Returns a spec for a map whose keys satisfy kpred and vals satisfy @@ -1907,10 +1907,11 @@ `(let [st# (inst-ms ~start) et# (inst-ms ~end) mkdate# (fn [d#] (java.util.Date. ^{:tag ~'long} d#))] - (spec (and inst? #(inst-in-range? ~start ~end %)) - :gen (fn [] - (gen/fmap mkdate# - (gen/large-integer* {:min st# :max et#})))))) + (clojure.spec.alpha/spec + (clojure.spec.alpha/and inst? #(clojure.spec.alpha/inst-in-range? ~start ~end %)) + :gen (fn [] + (gen/fmap mkdate# + (clojure.spec.gen.alpha/large-integer* {:min st# :max et#})))))) (defn int-in-range? "Return true if start <= val, val < end and val is a fixed @@ -1922,8 +1923,9 @@ "Returns a spec that validates fixed precision integers in the range from start (inclusive) to end (exclusive)." [start end] - `(spec (and int? #(int-in-range? ~start ~end %)) - :gen #(gen/large-integer* {:min ~start :max (dec ~end)}))) + `(clojure.spec.alpha/spec + (clojure.spec.alpha/and int? #(clojure.spec.alpha/int-in-range? ~start ~end %)) + :gen #(clojure.spec.gen.alpha/large-integer* {:min ~start :max (dec ~end)}))) (defmacro double-in "Specs a 64-bit floating point number. Options: @@ -1935,12 +1937,12 @@ [& {:keys [infinite? NaN? min max] :or {infinite? true NaN? true} :as m}] - `(spec (and c/double? + `(clojure.spec.alpha/spec (clojure.spec.alpha/and c/double? ~@(when-not infinite? '[#(not (Double/isInfinite %))]) ~@(when-not NaN? '[#(not (Double/isNaN %))]) ~@(when max `[#(<= % ~max)]) ~@(when min `[#(<= ~min %)])) - :gen #(gen/double* ~m))) + :gen #(clojure.spec.gen.alpha/double* ~m))) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; assert ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (defonce