欢迎!请参阅关于 页面,获取有关如何使用的更多信息。
评论由 roman01la 提出
提交了一个带有测试用例的补丁。
评论由 mfikes 提出
当与 CLJS-3085 结合使用时
CLJS-3086.patch 通过了 CI 和 Canary (/)
CLJS-3086.patch 已添加到 Patch Tender (i)
嗨 Roman,
这是一段有趣的代码,该补丁会触发警告
https://github.com/clojure/clojurescript/blob/c87d61e54fbbeae390e522ba315f0207fb0fed75/src/main/cljs/cljs/spec/alpha.cljc#L264
`cljs.user=> (s/coll-of any? :kind any? :min-count 1)WARNING: cljs.core/+, 所有参数都必须是数字,在行 1 获取 [clj-nil number]WARNING: cljs.core/+, 所有参数都必须是数字,在行 1 获取 [clj-nil number]
`
我还没有深入思考这个问题,但它提出了一个好哲学问题:如果你有下面的代码,是否存在类型错误?
(if nil (+ nil 1) 0)
我的初步感觉是,虽然这可能像森林里倒下的一棵树,我们或许能以某种方式解决,但可能更好的做法是修正那个有问题的宏。无论如何,我还不想在这方面花费太多时间,至少想和你分享。
在这个工单之外,我们有一些先例:这将在1.10.520版本中触发诊断。
`cljs.user=> (when false (inc false))
^
警告:cljs.core/+, 所有参数必须是数字,在第1行得到了[布尔型 数字]类型nil `
我认为应该修复这个宏。上面显示,即使您可以静态地证明某些代码路径没有被采取,分析警告也会触发对该路径上的代码。