请在 Clojure 2024 年度调查中分享您的想法!

欢迎!请参阅关于页面了解更多有关如何使用本网站的信息。

0 投票
协议
已关闭

defprotocol 无法解析标签类名,这导致在使用了未在命名空间中导入的导入类作为标签声明的协议时抛出异常。

user=> (import 'clojure.lang.ISeq) clojure.lang.ISeq user=> (defprotocol p (^ISeq f [_])) p user=> (ns x) nil x=> (defn x [y] (let [z (user/f y)] (inc z))) CompilerException java.lang.IllegalArgumentException: Unable to resolve classname: ISeq, compiling:(NO_SOURCE_PATH:4:33)

补丁: clj-1180-2.patch

审核: Alex Miller
- 我对这个补丁的唯一迟疑是让 tagToClass 成为公共的,并且从 core_deftype 中访问它,这意味着编译器 API 需要始终保持打开状态。

备注: 1.11.0-beta1 中发布

3 答案

0 投票

评论者:alexmiller

类似于 CLJ-1232。

0 投票

评论者:alexmiller

针对当前主分支的补丁更新,保留归属。

0 投票
by
参考:[链接到CLJ-1180](https://clojure.atlassian.net/browse/CLJ-1180)(由bronsa报告)
...