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

欢迎!请查看关于页面以了解更多该功能的信息。

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

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