-
Notifications
You must be signed in to change notification settings - Fork 3
/
reify_spec.clj
23 lines (20 loc) · 1.05 KB
/
reify_spec.clj
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
(ns io.github.frenchy64.fully-satisfies.reify-spec
"Provides a spec for clojure.core/reify via ::reify-args.
To register a spec for reify, call (register-reify-spec)."
(:require [clojure.spec.alpha :as s]
[clojure.core.specs.alpha :as cs]))
(s/def ::reify-args
(s/cat :options (s/keys*)
:specs (s/* (s/cat :name symbol?
:methods (s/* (s/spec
(s/cat :name simple-symbol?
:params (s/and vector?
(s/cat :params (s/+ ::cs/binding-form)))
:body (s/alt :prepost+body (s/cat :prepost map?
:body (s/+ any?))
:body (s/* any?)))))))))
(defn register-reify-spec
"Register a spec for clojure.core/reify."
[]
(s/fdef clojure.core/reify
:args ::reify-args))