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: 必须提示重载方法:toArray,编译:(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 的 arr 参数上添加了类型提示,这使得在 JDK 11 EA 21 上编译和测试成功。也适用于 JDK 8 和 10。

0

评论者:michalmarczyk

谢谢!应用并推送。我很快会发布一个版本。

0

评论者:wcohen

谢谢!今天早上我刚刚签署/提交了 Clojure CA。如果还需要联系其他人,请告知。

0
作者:
评论由: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 IntelliJ IDEA (Ultimate Edition)


因此,没有类型提示的情况下,Clojure 编译器无法确定在 try 定义只有一个参数('this' 加一个参数)的 toArray 方法的 deftype 表达式中,想要指的是哪个方法。
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 报告)
...