2024 年 Clojure 状态调查! 中分享您的想法。

欢迎!请在 关于 页面查看更多关于如何操作的详细信息。

0
Spec

`
(deftype MySpec []
s/Spec
(conform* [_ x]

::s/invalid))

(s/def ::x (MySpec.))

(s/explain ::x :foo)
`

这将因“无法解析 spec: :user/x”异常而失败,但 {{def}} 成功。将 deftype 转换为 defrecord 可以解决问题。

原因: {{with-name}} 函数有 ident?、regex? 和 IObj 的 cond 选项。如果这些选项都不成功,则没有回退案例,s/def 将静默返回 nil。

建议: 在回退案例中抛出错误。

补丁: clj-2135.patch

1 答案

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