来自邮件列表
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 吗?升级用户可能会看到新的警告,这可能会令人惊讶。
**弃用警告的默认值应该是警告还是不警告?