2024州Clojure调查! 中分享您的看法。

欢迎!请参阅关于 页面以获取更多关于这是如何工作的信息。

0
错误

使用新的 :warn-on-boxed (CLJ-1325),以下示例虽然都在装箱,但没有报告装箱数学警告。

user=> (defn f1 [^long x] (inc x)) f1 user=> (defn f2 [x] (aget (long-array [1 2]) 0)) f2 user=> (defn f3 [x] (aget (int-array [1 2]) 0)) f3 user=> (defn f4 [^String s] (.indexOf s "a"))

原因: emitBoxReturn 有一个硬编码的方法来装箱原始返回值。

解决方案: 如果 **unchecked-math** 设置为 :warn-on-boxed,则在装箱原始数字返回类型时发出警告。

补丁

2 答案

0

由 alexmiller 发表的评论

附带的补丁已完成工作,但通过在实际代码上试用,它找到了既有问题的情况又有很多安全忽略的情况,或者没有明显的修复警告的方式。我认为可能需要进一步调整以减少无法修复事项的比率。

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