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