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 的 (link: this 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[] 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[] toArray(IntFunction generator)"

因此,在没有类型提示的情况下,Clojure编译器无法确定在尝试使用1个参数定义toArray的deftype形式中哪个方法被意图使用(Clojure deftype方法定义中的'this'加一个参数)。
0

_由 xtreak 提出的评论_

感谢 @jafingerhut 提供信息。相关提交:[链接](http://hg.openjdk.java.net/jdk/jdk11/rev/3ef0862bbb3d) 。这也似乎会对Clojure主分支造成问题,けど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报告)
...