From 91782b4f3a8454dff736d75ba81449c4197a2dfc Mon Sep 17 00:00:00 2001 From: Michiel Borkent Date: Wed, 28 Sep 2022 12:08:01 +0200 Subject: [PATCH] Add moar bindings --- feature-spec-alpha/babashka/impl/spec.clj | 6 +++++- src/babashka/impl/clojure/spec/alpha.clj | 8 ++++---- 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/feature-spec-alpha/babashka/impl/spec.clj b/feature-spec-alpha/babashka/impl/spec.clj index 69544792..461c6f08 100644 --- a/feature-spec-alpha/babashka/impl/spec.clj +++ b/feature-spec-alpha/babashka/impl/spec.clj @@ -79,7 +79,11 @@ 'nilable-impl (copy-var s/nilable-impl sns) 'nonconforming (copy-var s/nonconforming sns) 'get-spec (copy-var s/get-spec sns) - 'exercise (copy-var s/exercise sns)}) + 'exercise (copy-var s/exercise sns) + 'merge (copy-var s/merge sns) + 'merge-spec-impl (copy-var s/merge-spec-impl sns) + 'keys* (copy-var s/keys* sns) + 'with-gen (copy-var s/with-gen sns)}) #_:clj-kondo/ignore (def test-namespace diff --git a/src/babashka/impl/clojure/spec/alpha.clj b/src/babashka/impl/clojure/spec/alpha.clj index 446bf88b..5900bc82 100644 --- a/src/babashka/impl/clojure/spec/alpha.clj +++ b/src/babashka/impl/clojure/spec/alpha.clj @@ -512,7 +512,7 @@ specs. Unlike 'and', merge can generate maps satisfying the union of the predicates." [& pred-forms] - `(merge-spec-impl '~(mapv res pred-forms) ~(vec pred-forms) nil)) + `(clojure.spec.alpha/merge-spec-impl '~(mapv res pred-forms) ~(vec pred-forms) nil)) (defn- res-kind [opts] @@ -1813,9 +1813,9 @@ user=> (s/conform (s/cat :i1 integer? :m (s/keys* :req-un [::a ::c]) :i2 integer?) [42 :a 1 :c 2 :d 4 99]) {:i1 42, :m {:a 1, :c 2, :d 4}, :i2 99}" [& kspecs] - `(let [mspec# (keys ~@kspecs)] - (with-gen (clojure.spec.alpha/& (* (cat ::k keyword? ::v any?)) ::kvs->map mspec#) - (fn [] (clojure.spec.gen.alpha/fmap (fn [m#] (apply concat m#)) (gen mspec#)))))) + `(let [mspec# (clojure.spec.alpha/keys ~@kspecs)] + (clojure.spec.alpha/with-gen (clojure.spec.alpha/& (clojure.spec.alpha/* (clojure.spec.alpha/cat ::k keyword? ::v any?)) ::kvs->map mspec#) + (fn [] (clojure.spec.gen.alpha/fmap (fn [m#] (apply concat m#)) (clojure.spec.alpha/gen mspec#)))))) (defn ^:skip-wiki nonconforming "takes a spec and returns a spec that has the same properties except