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

欢迎!请参阅关于页面以获取更多关于此的工作方式的详细信息。

0 评论
编译器

{{(fn [a-b a_b] (fn [] a_b a-b))}}
抛出
{{CompilerException java.lang.ClassFormatError: Duplicate field name&signature}}

2 答案

0 评论

评论者:bronsa

这是由于clojure将-简单地转换为_导致的 - 触发类似错误的其他方法是

user=> (deftype x [a_b a-b]) 语法错误(ClassFormatError)编译deftype*在(REPL:1:1)。在类文件compile__stub/user/x中,字段名称 "a_b" 与签名 "Ljava.lang.Object;" 重复

解决这个问题需要改变clojure过去10年一直在使用的名称转换方案,这可能有一些严重的意外后果,不确定这是否可行

0 评论
参考:https://clojure.atlassian.net/browse/CLJ-2518(由fmnoise报告)
...