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

欢迎!请参阅关于页面以了解更多有关此工作方式的信息。

0
Clojure

编译器关于IPersistentCollection字面量的各种可能类型有很多假设,这是完全合理的。这个案例奇怪的地方在于,一旦定义了count,取(常量)值就能正常工作,但将其用作参数时就会遇到为各种字面量空变体的闭包dispatch。

> (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已标记为1.8版本已修复。

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