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 投票
_评论人:jafingerhut_

为了未来参考,以防其他人感兴趣,这个错误不会出现在 JDK 10 及之前的版本,因为接口 java.util.Collection 中只此一个名为 "toArray" 的单参数方法:[链接](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" 的单参数方法:[链接](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 编译器无法确定 deftype 形式中尝试用单个参数('this' 加一个 Clojure deftype 方法定义中的更多参数)定义 toArray 时使用的是哪个方法。
0 投票

评论人:xtreak

感谢 @jafingerhut 提供信息。相关提交:[链接](http://hg.openjdk.java.net/jdk/jdk11/rev/3ef0862bbb3d)。它似乎也会对 Clojure 的 master 分支产生影响,Will Cohen 的补丁帮助测试通过。我已经在那里打开了一个相关的问题:[链接](https://dev.clojure.org/jira/browse/CLJ-2374)

0 投票

评论人:kanwei

有没有可能发布新版本的 rrb-vector?现在 JDK 11 已经是 RC 版,问题似乎已经在 master 版本中修复。谢谢!

0 投票

评论人:gshayban

这已经在最新版本中修复,我认为可以这样关闭这个任务。

0 投票

评论人:[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 报告)
...