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

欢迎!请查看关于页面,了解更多关于该功能的信息。

0
规格

当使用spec/or未指定参数时,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 报告)
...