请分享您的想法,参加 2024 Clojure状态调查!

欢迎!请参阅关于页面以获取更多有关如何使用本网站的详细信息。

0
ClojureScript

当前定义如

(defn set! (link: ) ...)

不会产生任何警告。然而,任何使用它的(没有{{:as}}命名空间别名)都不会使用定义的变量,而是使用set!特殊形式。

似乎应该有一个警告。

5 个答案

0

评论者:anmonteiro

附上修复和测试补丁。

0
_评论者:mfikes_

我知道David建议这可能是一个好的选择,但一个后果是,{{cljs.spec/def}}宏不能在引导中使用这个更改定义。(我没有彻底调查,但这可能只是宏在引导中被当作ClojureScript处理的结果,因此受到这个新保护器的影响。)

无论根本原因是什么,如果您尝试运行{{script/test-self-parity}},将会看到这个错误。


#error {:message "无法评估cljs.spec", :data {:tag :cljs/analysis-error}, :cause #error {:message "第51行无法定义特殊形式", :data {:file nil, :line 51, :column 1, :tag :cljs/analysis-error}}}
 

参考:第51行当前指向{{def}}宏:https://github.com/clojure/clojurescript/blob/e2db5d9ff8cb6a099ebc2a8cd379385bf4649b38/src/main/cljs/cljs/spec.cljc#L51
0

评论者:mfikes

补丁不再适用。

0

评论者:ray.mcdermott

此问题分配给了(链接:~anmonteiro),但似乎有一段时间没有进展。

我可以接管它吗?

0
参考: https://clojure.atlassian.net/browse/CLJS-1474 (由 martinklepsch 提出)
...