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