使用新的 :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,则在装箱原始数字返回类型时发出警告。
补丁