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

欢迎!请参阅 关于 页面以了解如何工作的更多信息。

+1
Clojure

你好,

我正在开发一个在 Clojure 1.12.0-master-SNAPSHOT 上再次运行测试套件的项目。

在这个版本的 Clojure 中,形式 (drop Long/MAX_VALUE []) 抛出 ArithmeticException。

我直接在带有提交 1b3a5065b7f533d4fd7109686fcc4489163b916c 的 Clojure 存储库中尝试了这个操作,那里的情况也导致了这个问题。

$ java -jar clojure.jar Clojure 1.12.0-master-SNAPSHOT user=> (drop Long/MAX_VALUE []) 运行时错误 (ArithmeticException) 在 java.lang.Math/toIntExact (Math.java:1074)。整数溢出

我只是想提一下这件事情,因为我没有在 JIRA 上找到关于这个问题的任何问题。

作为一个注释 - 由于 `IDrop` 接口将其唯一方法声明为 `drop(int n)`,因此 `drop` 函数将对于任何不适合整数的值失败,例如 `(drop 2147483648 [])`。

2 答案

+1

感谢您的反馈,已记录为https://clojure.atlassian.net/browse/CLJ-2787。我们可能决定不修复此问题,但在1.12发布之前将对其进行检查。

+1

您能否提供更多有关为何这可能很重要的信息?您在什么场景下看到这个问题?

嗨Alex,

感谢您调查这个问题。我遇到这个问题是在一个生成烟雾测试中,我在此测试中生成了一个限制和偏移量选项映射,这些映射被传递给Clojure的take和drop函数。

失败的测试是这个
https://github.com/clojure-emacs/logjam/blob/master/test/logjam/event_test.clj#L17
...