评论者:jafingerhut
我不知道这个想法是否会经过审查,但是如果它被审查,我对建议的补丁有一些评论。
新的符号 warn-on-replace 应该在其上有 doc 和 metadata。请参考 core.clj 中 warn-on-reflection 的 add-doc-and-meta 来复制和编辑的示例。
在 Namespace.java 中检查 WARN_ON_REFLECTION 之后再发出警告,而不是 WARN_ON_REPLACE。
ns_libs.clj 文件中的测试描述可能存在错别字:可能是 "symbol in clojure.core" 而不是 "symbol is clojure.core"。?
如果有人希望在 ns 表达形式中使用 :use 语句时得到警告,那么似乎唯一的方法是先在 ns 表达式之前在文件中执行 (set! warn-on-replace true)。但这与当前 tools.namespace 版本不太兼容,因为 tools.namespace 假设如果存在 ns 表达式,它将是文件中的第一个表达式。有人可能会说 tools.namespace 不应该有这样的假设,但现在它确实这样做了。
也许应该有一个类似于 clojure.compile.warn-on-reflection (在 Compile.java 中查找 warn-on-replace) 的命令行选项 clojure.compile.warn-on-replace?