2024 Clojure 状态调查! 中分享您的想法。

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

0
Clojure

编译器对 IPersistentCollection 文本的可能类型有很多假设,这是理所当然的。这个案例的奇怪之处在于,一旦定义了 count,(常量)值就会生效,但是作为参数使用时就会遇到各种文本的空变体的闭派发。

> (deftype T [] clojure.lang.IPersistentCollection (count [_] 0) > (def ^:const t (T.)) > (meta t) java.lang.UnsupportedOperationException: Unknown Collection type Compiler.java:2860 clojure.lang.Compiler$EmptyExpr.emit Compiler.java:3632 clojure.lang.Compiler$InvokeExpr.emitArgsAndCall ...

编辑:经过一些调查后更新了工单
注意:附加的测试补丁甚至没有实现 deftype 的 (count (link: )),这只会触发 AbstractMethodError 正确的错误。

4 个答案

0

评论者:bendlas

测试中有一个拼写错误,抱歉。

0

评论者:alexmiller

看起来是 CLJ-1093 的一个变种。

0

评论者:bendlas

此错误在1.8版本中仍然存在,尽管CLJ-1093已被标记为已修复。

0
参考:https://clojure.atlassian.net/browse/CLJ-1575(由bendlas报告)
...