来自邮件列表
http://groups.google.com/group/clojure/msg/c41d909bd58e4534。忽略你正在使用弃用的命名空间或变量是很容易的。文档警告很小,而且没有编译器警告。
**提议:**
**增加新的 {{\*warn-on-deprecated*}} 动态变量,默认为 false**
**当加载具有 {{:deprecated true}}} 标识的命名空间时,向标准错误输出警告**。
**当分析具有 {{:deprecated true}}} 标识的变量时,向标准错误输出警告**。
**当扩展具有 {{:deprecated true}}} 标识的宏时,向标准错误输出警告**。
**新的系统属性 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 : var #'user/f 是弃用的
;;弃用宏的使用(在宏扩展时)
(defmacro ^:deprecated m [x] x)
(m 5)
;;=> 弃用警告,NO_SOURCE_PATH:7:1 : macro #'user/m 是弃用的
;;弃用命名空间的使用(在加载时)
(ns foo {:deprecated "1.1"})
(ns bar (:require foo))
;;=> 弃用警告:从命名空间 `bar` 加载已弃用的命名空间 `foo`
**补丁:** 706-deprecated-ns-var-warnings-tested-3.diff
**问题:** 弃用警告的默认值应该是 true 吗?升级的用户可能会看到新的警告,可能令人惊讶。
**默认值应该是警告还是不警告弃用?**