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