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

欢迎!请在关于页面查看有关如何使用本站的更多详细信息。

+1 投票
错误

在将CLJ-1232提交到master后,如果在defn中使用了无效的类型提示,Clojure编译器可能会抛出NPE。这在CLJS中体现出来,因为defn宏被ClojureScript编译器重复使用,但我想这也引发了一个问题:“不良的类型提示应该导致编译器抛出异常吗?”

有关问题中提到的恶行行可以在此处的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(由halgari报告)
...