来自邮件列表
http://groups.google.com/group/clojure/msg/c41d909bd58e4534。在不知道的情况下,很容易使用已废弃的命名空间或变量。文档警告很小,且编译时没有警告。
**建议**:
**新增 *warn-on-deprecated* 动态变量,默认为 false
当加载具有 :deprecated 为 true 的命名空间时向 stderr 输出警告。
当分析具有 :deprecated 为 true 的变量时向 stderr 输出警告。
当展开具有 :deprecated 为 true 的宏时向 stderr 输出警告。
新增系统属性 clojure.compiler.warn-on-deprecated
用 clojure.compiler.warn-on-deprecated 编译 Clojure 本身
修复 Clojure 内部的废弃警告(replicate, clear-agent-errors)
使用 :deprecation 标签标记 clojure.parallel 为已废弃
示例
(set! *warn-on-deprecated* true)
;; 使用废弃的变量(在编译时)
(defn ^:deprecated f [x] x)
(f 5)
;;=> 废弃警告,NO_SOURCE_PATH:7:1 : 变量 #'user/f 已废弃
;; 使用废弃的宏(在宏展开时)
(defmacro ^:deprecated m [x] x)
(m 5)
;;=> 废弃警告,NO_SOURCE_PATH:7:1 : 宏 #'user/m 已废弃
;; 使用废弃的命名空间(在载入时)
(ns foo {:deprecated "1.1"})
(ns bar (:require foo))
;;=> 废弃警告:从命名空间 `bar` 加载已废弃的命名空间 `foo`
**补丁**:706-deprecated-ns-var-warnings-tested-3.diff
**问题**:废弃警告的默认值应该为 true 吗?升级时可能会出现新的警告,这可能会令人惊讶。
**废弃警告应该默认开启或关闭吗?