A quick follow-up - if I use s/assert instead of s/valid you can see the problem with the s/or tag (:b in this case) getting into the assertion val
(s/assert (s/and (s/or :a (s/and #(empty? (::data %)) #(empty? (::path %))) :b #(= (::val %) (get-in (::data %) (::path %)))) (s/keys :req [::val ::data ::path])) {::data [:zob] ::path [0] ::val :zob}) Error: Spec assertion failed val: [:b {:clarity.cursors/data [:zob], :clarity.cursors/path [0], :clarity.cursors/val :zob}] fails predicate: map? :cljs.spec/failure :assertion-failed -- Note that posts from new members are moderated - please be patient with your first post. --- You received this message because you are subscribed to the Google Groups "ClojureScript" group. To unsubscribe from this group and stop receiving emails from it, send an email to clojurescript+unsubscr...@googlegroups.com. To post to this group, send email to clojurescript@googlegroups.com. Visit this group at https://groups.google.com/group/clojurescript.