`
(deftype MySpec []
s/Spec
(conform* [_ x]
::s/invalid))
(s/def ::x (MySpec.))
(s/explain ::x :foo)
`
这将引发一个 "无法解析规范: :user/x" 异常,但成功创建了 {{def}}。将 deftype 更改为 defrecord 可解决问题。
原因: {{with-name}} 函数具有 ident?、regex? 和 IObj 的条件选项。如果没有这些选项成功,则没有回退案例,s/def 将静默返回 nil。
建议: 在回退案例中抛出错误。
修复: clj-2135.patch