评论人员:jafingerhut
我不知道这个想法是否会经过检验,但我对提出的补丁有一些评论。
新符号 warn-on-replace 应该具有文档和元数据。请参阅 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 语句中获取警告,使用 patch clj-1257.diff 的唯一方式似乎是在文件中 ns 形式之前执行 (set! warn-on-replace true)。但这与当前版本的 tools.namespace 不兼容,因为它假设 ns 形式是文件中的第一个形式。有人可能会认为 tools.namespace 不应该做出这样的假设,但现在是这样的。
或许应该有一个命令行选项 clojure.compile.warn-on-replace,就像 clojure.compile.warn-on-reflection(在 Compile.java 中搜索 warn-on-replace)一样?