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