2024 年 Clojure 状态调查! 中分享您的想法。

欢迎!请参阅 关于 页面以了解有关此内容的一些更多信息。

0
Java Interop

user=> (quot Long/MIN_VALUE -1) -9223372036854775808

与 CLJ-1222 和 CLJ-1253 的类似问题,根本原因与 CLJ-1225 中所述相同。由于在这个情况下所需的修复可能完全不同,因此从 CLJ-1253 分离出单独的工单以处理 long 除法。

Rich Hickey 在 CLJ-1225 的评论中表示,这个情况应该抛出异常。

问题:对于 inc(在给定 Long/MAX_VALUE 输入时抛出)有自动提升的 inc' 和未检查的 unchecked-inc。quot 现在在这种情况中抛出异常。是否应该有自动提升的 quot' 和未检查的 unchecked-quot?

5 答案

0

评论由:jafingerhut 提出

补丁 clj-1254-v1.txt 导致 (quot Long/MIN_VALUE -1) 抛出异常,由于结果溢出,如果两个参数都是 long。

与有自动提升版本 inc' 和未检查版本 unchecked-inc 的 inc 不同,没有自动提升的 quot' 和未检查的 unchecked-quot。此补丁不添加一个。

是否应该添加 quot' 和 unchecked-quot?如果是这样,这是此工单还是单独的一个?

0

评论由:jafingerhut 提出

补丁 clj-1254-2.diff 与 clj-1254-v1.txt 相同,只不过它干净地应用于最新主分支。唯一的变化是在更改的行上下文中,因为最近的提交。

0

评论由:alexmiller 提供

quot 在溢出时应该抛出异常
quot'(我假设不是 divide'?)应该添加到溢出时的自动提升
unchecked-divide 应该执行 quot 现在执行的动作 - 查看 CLJ-1545

0
参考:[https://clojure.atlassian.net/browse/CLJ-1254](https://clojure.atlassian.net/browse/CLJ-1254)(由 jafingerhut 报告)
...