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

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

0
core.rrb-vector

我试图在 JDK 11 EA 版本构建上测试 boot,并在依赖链中发现有 fipp,它的依赖项中包含 core.rrb-vector 0.0.11。它使用以下错误失败

 java.lang.IllegalArgumentException: Must hint overloaded method: toArray

clojure.lang.Compiler$CompilerException: java.lang.IllegalArgumentException: Must hint overloaded method: toArray, compiling:(clojure/core/rrb_vector/rrbt.clj:282:1)

         clojure.lang.ExceptionInfo: java.lang.IllegalArgumentException: Must hint overloaded method: toArray, compiling:(clojure/core/rrb_vector/rrbt.clj:282:1)

参阅 Travis 构建: https://travis-ci.org/tirkarthi/boot/jobs/398611988#L803

几天前它通过测试,但现在已经失败。如果您认为在 master 中已修复但尚未发布,请随时关闭此问题。

成功的构建: https://travis-ci.org/tirkarthi/boot/jobs/398610834

9 答案

0

作出的评论:wcohen

此补丁在 toArray 的 (link: this arr) 算法数上添加了类型提示,从而导致在 JDK 11 EA 21 上编译和测试成功。在 JDK 8 和 10 上也有效。

0

作出的评论:michalmarczyk

谢谢!已应用并推出。即将进行发布。

0

作出的评论:wcohen

谢谢!我今早也只签了 Clojure CA。如果还有其他人需要联系我,请告诉我。

0
by
_ 评论者:jafingerhut_

为了将来参考,以防除了我之外的其他人感兴趣,这个错误在 JDK 10 和更早版本中没有出现,因为接口 java.util.Collection 中唯一的名为 "toArray" 的 1 参数方法就是这个:https://download.java.net/java/early_access/jdk11/docs/api/java.base/java/util/Collection.html#toArray(T%5B%5D),签名 "<T> T[] toArray​(T[] a)"

从 JDK 11 开始,接口 java.util.Collection 中添加了另一个名为 "toArray" 的 1 参数方法:https://download.java.net/java/early_access/jdk11/docs/api/java.base/java/util/Collection.html#toArray(java.util.function.IntFunction),签名 "default <T> T[] toArray​(IntFunction<T[]> generator)"

因此,没有类型提示,Clojure 编译器无法确定在尝试使用 1 个参数('this' 加 Clojure deftype 方法定义中额外的 1 个参数)定义 toArray 的 deftype 表格中的哪个方法。
0
by

评论者:xtreak

感谢 @jafingerhut 提供的信息。相关提交: http://hg.openjdk.java.net/jdk/jdk11/rev/3ef0862bbb3d 。它似乎也会引起 Clojure 主分支的问题,Will Cohen 的补丁有助于测试通过。我在那里打开了一个相关的问题: https://dev.clojure.org/jira/browse/CLJ-2374

0
by

评论者:kanwei

rrb-vector 有可能发布新版本吗?现在 JDK 11 已经是 RC 版,看起来主分支上的问题已经修复了。谢谢!

0
by

评论者:gshayban

这已经在最新版本中,我认为这个工单可以关闭了。

0
by

评论者:[email protected]

这已经在 https://github.com/clojure/core.rrb-vector/commit/b489b3249d56bb6a104c2d4ead2da8ade8dd29b4 中合并,并在版本 0.0.12 及以后(0.0.13 是截至写作时的最新版本)中可用。为了方便复制/粘贴

[org.clojure/core.rrb-vector "0.0.13"]

0
参考: https://clojure.atlassian.net/browse/CRRBV-18 (由 xtreak 报告)
...