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报告)
...