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

欢迎!请参考关于页面了解该功能的一些更多信息。

0投票
Spec

当使用spec/or without parameters时,spec/valid?和spec/explain的结果出现矛盾。

最小示例

(s/valid? (s/or) :something) => false (s/explain (s/or) :something) 成功! => nil

类似于{{or}},{{s/or}}应该无法验证任何内容(因此第一次调用是好的),但应该在explain中报告错误(因此explain结果不好)。

建议:在s/or explain中,逻辑会遍历所有preds来构建关于每个值不匹配的问题列表,但没有显式处理没有preds的基本情况。代码更改会检查该情况并为整体的s/or不匹配构建一个特定的explain问题错误。补丁包括针对(s/or)和(s/and)(是好的)的修复和测试。

补丁:clj-2360.patch

1 个答案

0投票
参考:https://clojure.atlassian.net/browse/CLJ-2360(由alex+import报告)
...