请在 2024 年 Clojure 调查问卷!中分享您的想法。

欢迎!请查看 关于 页面以了解更多关于如何工作的信息。

0 投票
Spec

`
(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

1 答案

0 投票
参考: https://clojure.atlassian.net/browse/CLJ-2135 (由 thheller 报告)
...