2024 年 Clojure 状态调查! 中分享您的想法。

欢迎!有关如何使用本站的更多信息,请参阅 关于 页面。

0
ClojureScript

目前,定义如下

(defn set! () ...)

不会产生任何警告。但是,任何对它的使用(没有使用 {{:as}} 命名空间别名)都将不会使用定义的 var,而是使用 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](https://clojure.atlassian.net/browse/CLJS-1474)(由martinklepsch报告)
...