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

欢迎!请查看 关于 页面以了解如何使用此网站的一些更多信息。

0
错误
在 Clojure 1.10 的新错误报告阶段中,我们识别出两个单独的阶段 - :compile-syntax-check(由编译器发现的语法错误)和 :compilation(编译期间发生的错误,但不是语法错误)。

后者的示例


user=> a/b
语法错误在 (REPL:0:0) 编译时。
没有名为 a 的命名空间。
user=> (ex-data *e)
#:clojure.error{:phase :compile-syntax-check, :line 0, :column 0, :source "NO_SOURCE_PATH"}


这里的语法是正确的,只是 a 不是一个已知的命名空间。

编译器在区分这两个方面时没有遵循任何模式。我们应该通过异常类型或显式地在 CompilerException 中指定阶段来确保这种一致性。

1 答案

0
参考: https://clojure.atlassian.net/browse/CLJ-2428(由 alexmiller 报告)
...