来自邮件列表
http://groups.google.com/group/clojure/msg/c41d909bd58e4534。在不清楚自己的行为时会轻松地使用过时的名称空间或变量。文档警告信息很小,并且没有编译器警告。
**建议:**
**添加新的 {{\*warn-on-deprecated*}} 动态变量,默认值为 false
**当日志载入具有 böyle {{: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 : 变量 #'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 吗?升级的人可能会看到新的警告,可能会很意外。
**默认值应该警告还是不警告过时?