欢迎!有关此工作方式的更多信息,请参阅关于页面。
以下是一个产生无效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
评论者:gingenhagen
即使没有 let,这个问题也会发生。
(fn [] ^{"meta" "data"} (fn [] true))
给我的是