欢迎!请参阅 关于 页面以获取更多关于该系统如何工作的信息。
以下是一个产生无效 JavaScript 的最小测试用例
`(defn f [](let [a 0]
`
^{"meta" "data"} (fn [] true)))
编译后的 JavaScript 包含无效标记序列 "return return"。 (根据 Chrome:未捕获的语法错误:意外的 return)
如果元数据应用于映射字面量而不是函数字面量,则不会出现此问题。只有当函数和元数据都位于 let 之内时,才会出现此问题。
评论者:bobby.eickhoff
我忘记试用了 with-meta。使用 with-meta 不会产生此语法错误,因此这仅是元数据读取宏的问题。
评论者:dnolen
尼古拉,对此有何快速看法?这很可能是 CLJS 方面的编译器问题。
Hrm,看起来 {{analyze-wrap-meta}} 可能需要委托给一个辅助程序来更改给定 AST 节点的 {{:context}}。
评论者:bendlas
我只是升级了一个旧项目时偶然遇到这个问题。还有一个重复的问题:[http://dev.clojure.org/jira/browse/CLJS-1482](http://dev.clojure.org/jira/browse/CLJS-1482)
评论者:gingenhagen
即使没有 let,这个问题也会发生给我。
(fn [] ^{"meta" "data"} (fn [] true))
给出