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

欢迎!请参阅关于页面,了解更多关于这个功能的信息。

0
ClojureScript

以下是第一个和最后一个应该抛出异常的地方

cljs.user=> (set! *print-fn-bodies*) nil cljs.user=> (set! *print-fn-bodies* true) true cljs.user=> (set! target -prop 3) true cljs.user=> (set! *print-fn-bodies* true false true) true

实施指南

抛出的消息应源自Clojure,例如“赋值格式错误,期望(set! target val)或(set! target -prop val)”

检查和抛出可以添加到解析器代码中,该代码解析'mutation!'
https://github.com/clojure/clojurescript/blob/6eedd0a08c49f7b0d4dcb30977b2fb38c90577bd/src/main/clojure/cljs/analyzer.cljc#L2229

在解析器代码中,对于'if'的类似抛出示例见:https://github.com/clojure/clojurescript/blob/6eedd0a08c49f7b0d4dcb30977b2fb38c90577bd/src/main/clojure/cljs/analyzer.cljc#L1446-L1449
https://github.com/clojure/clojurescript/blob/master/src/test/clojure/cljs/analyzer_tests.clj

可以在{{cljs.analyzer-tests}}中添加测试(通过{{lein test}}运行):https://github.com/clojure/clojurescript/blob/master/src/test/clojure/cljs/analyzer_tests.clj

9 答案

0

评论由:namenu 发表

set! 支持三参数形式,因此Clojure的错误信息可能是语法错误的。

像'if'一样抛出错误是否可以?

0

评论由:thheller 发表

代码表明传递三个参数实际上是有效的。

(set! o -prop val) (set! (.-prop o) val)

0

评论者:mfikes

哦,对,托马斯。我会更新描述。

0

评论者:mfikes

Hyunwoo:是的

0

评论者:sulami

希望这能达到效果(希望如此)。已在我机器上验证,它使用我所有项目都能构建和运行。

0

评论者:mfikes

嗨,罗宾。感谢你的贡献。你签署CA了吗?

0

评论者:sulami

我只是刚刚签好的,是的。

0

评论者:mfikes

CLJS-2923.patch LGTM。它表现正常,并能通过CI和Canary测试。

0
...