评论者: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-reflection 的命令行选项 clojure.compile.warn-on-replace?(在 Compile.java 中搜索 warn-on-replace)。