2024 Clojure调查问卷中分享您的想法!

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

0
ClojureScript

当前定义如下

(defn set! () ...)

将不会引起任何警告。然而,任何使用它(没有{{: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报告)
...