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

欢迎!请查阅关于页面,以了解更多此如何工作的信息。

0
Clojure

编译器对IPersistentCollection字面量的可能类型有很多假设,这是理所当然的。这个案例奇怪的是,一旦定义了count,(constant)值就可以正常使用,但将其用作参数则会遇到各种字面量的空变体的封闭调度。

> (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 ...

编辑:更新了工单后的一些调查
注意:附带的测试补丁甚至没有实现(link: )的(deftype)的count,这只会引起 AbstractMethodError

4 答案

0

评论者:bendlas

测试中有一个打字错误,抱歉

0

评论者:alexmiller

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

0

评论者:bendlas

即使CLJ-1093已在1.8中标记为修复,该错误仍然存在于1.8中。

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