欢迎!请查看关于页面,以获取更多关于这个工作原理的信息。
在提交 CLJ-1232 至 master 之后,如果使用无效类型进行类型提示的 defn,Clojure 编译器可能会抛出 NPE。这在 CLJS 中出现,因为 ClojureScript 编译器重用了 defn 宏,但我认为这提出了一个问题:“糟糕的类型提示是否应该导致编译器异常?”
有问题的行可以在 GitHub 上找到:https://github.com/clojure/clojure/blob/master/src/clj/clojure/core.clj#L247
alexmiller 评论说:
这基本上与 CLJ-1868 相同,但我认为你在这里询问的问题是,糟糕的类型提示是否应该被忽略或抛出任何异常,对吧?(而 CLJ-1868 是关于抛出哪种异常/消息的问题)
halgari 评论说:
我同意。我认为另一个可能的解决方案是更新 CLJS,以便它不使用 CLJ defn,但我仍然认为糟糕的类型提示应该被忽略。
bronsa 评论说:
我不同意我们应该忽略糟糕的类型提示。如果编译器知道有错误,它应该立即通知用户,而不是默默地忽略,并可能在稍后运行时失败
描述可以添加一些示例