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

欢迎!请查看关于页面,以获取更多关于这个工作原理的信息。

+1 投票
错误

在提交 CLJ-1232 至 master 之后,如果使用无效类型进行类型提示的 defn,Clojure 编译器可能会抛出 NPE。这在 CLJS 中出现,因为 ClojureScript 编译器重用了 defn 宏,但我认为这提出了一个问题:“糟糕的类型提示是否应该导致编译器异常?”

有问题的行可以在 GitHub 上找到:https://github.com/clojure/clojure/blob/master/src/clj/clojure/core.clj#L247

5 个回答

0 投票

alexmiller 评论说:

这基本上与 CLJ-1868 相同,但我认为你在这里询问的问题是,糟糕的类型提示是否应该被忽略或抛出任何异常,对吧?(而 CLJ-1868 是关于抛出哪种异常/消息的问题)

0 投票

halgari 评论说:

我同意。我认为另一个可能的解决方案是更新 CLJS,以便它不使用 CLJ defn,但我仍然认为糟糕的类型提示应该被忽略。

0 投票

bronsa 评论说:

我不同意我们应该忽略糟糕的类型提示。
如果编译器知道有错误,它应该立即通知用户,而不是默默地忽略,并可能在稍后运行时失败

0 投票

alexmiller 评论说:

描述可以添加一些示例

0 投票
参考:[https://clojure.atlassian.net/browse/CLJ-1863](https://clojure.atlassian.net/browse/CLJ-1863)(由halgari报告)
...