请在 2024 年 Clojure 现状调查!中分享您的想法。

欢迎!请参阅 关于 页面,获取更多有关如何使用本网站的信息。

+1
Clojure

您好,

我正在一个项目中使用 Clojure 1.12.0-master-SNAPSHOT 运行测试套件。

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

我在 Clojure 仓库的提交 1b3a5065b7f533d4fd7109686fcc4489163b916c 中直接尝试了这个表达式,问题同样存在。

$ 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
by

你还有更多关于为什么会很重要的信息吗?你在什么情况下遇到这个问题?

by
嗨,Alex,

感谢你调查这个问题。我在一个生成烟雾测试中遇到了这个问题,我在那里为limit和offset值生成了一个选项映射,这些值被传递给Clojure的take和drop函数。

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