请在 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
by

评论由:alexmiller 提出

附加的补丁执行了任务,但通过在实际代码中尝试运行它,它找到了一些问题案例以及许多可以安全忽略的案例,或者没有明显方法修复警告的案例。我认为可能需要进行一些调整以减少无法修复的事物的频率。

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