欢迎!请参见关于页面以获取更多关于这个工作的信息。
以下是生成无效JavaScript的简化测试案例:
`(defn f [](let [a 0]
`
^{"meta" "data"} (fn [] true)))
编译后的JavaScript包含无效的令牌序列 "return return"。 (Chrome显示:Uncaught SyntaxError: Unexpected token 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))
给我