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