来自邮件列表
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 is deprecated
;; 宏展开时使用过时宏
(defmacro ^:deprecated m [x] x)
(m 5)
;;=> 过时警告,NO_SOURCE_PATH:7:1 : macro #'user/m is deprecated
;; 加载时使用过时命名空间
(ns foo {:deprecated "1.1"})
(ns bar (:require foo))
;;=> 过时警告:从命名空间`bar`加载过时的命名空间`foo`
**补丁:** 706-deprecated-ns-var-warnings-tested-3.diff
**问题:** 过时警告的默认值应该是true吗?升级的用户可能会看到新的警告,可能会使他们感到惊讶。
**是否应该在过时时警告或不停警...