about summary refs log tree commit diff
diff options
context:
space:
mode:
authorNick Cameron <ncameron@mozilla.com>2016-10-11 17:19:51 +1300
committerNick Cameron <ncameron@mozilla.com>2016-10-27 11:44:42 +1300
commitb7675cf04ad1c65e86f51feddc3451b46a768d6b (patch)
treef0f7192b6f00550160eb621fc692618b5451f1ce
parentd1b08b136c47c37cce91d65dc58f375af0d085e1 (diff)
downloadrust-b7675cf04ad1c65e86f51feddc3451b46a768d6b.tar.gz
rust-b7675cf04ad1c65e86f51feddc3451b46a768d6b.zip
Deprecate custom_derive
Has a custom deprecation since deprecating features is not supported and is a pain to implement
-rw-r--r--src/libsyntax/feature_gate.rs7
-rw-r--r--src/libsyntax_ext/deriving/mod.rs1
2 files changed, 7 insertions, 1 deletions
diff --git a/src/libsyntax/feature_gate.rs b/src/libsyntax/feature_gate.rs
index 352479d1b1d..2e15a454df1 100644
--- a/src/libsyntax/feature_gate.rs
+++ b/src/libsyntax/feature_gate.rs
@@ -897,7 +897,12 @@ pub const EXPLAIN_ALLOW_INTERNAL_UNSTABLE: &'static str =
     "allow_internal_unstable side-steps feature gating and stability checks";
 
 pub const EXPLAIN_CUSTOM_DERIVE: &'static str =
-    "`#[derive]` for custom traits is not stable enough for use and is subject to change";
+    "`#[derive]` for custom traits is not stable enough for use. It is deprecated and will \
+     be removed in v1.15";
+
+pub const EXPLAIN_DEPR_CUSTOM_DERIVE: &'static str =
+    "`#[derive]` for custom traits is deprecated and will be removed in v1.15. Prefer using \
+     procedural macro custom derive";
 
 pub const EXPLAIN_DERIVE_UNDERSCORE: &'static str =
     "attributes of the form `#[derive_*]` are reserved for the compiler";
diff --git a/src/libsyntax_ext/deriving/mod.rs b/src/libsyntax_ext/deriving/mod.rs
index 07401d59a15..ca07a9267fa 100644
--- a/src/libsyntax_ext/deriving/mod.rs
+++ b/src/libsyntax_ext/deriving/mod.rs
@@ -175,6 +175,7 @@ pub fn expand_derive(cx: &mut ExtCtxt,
                                            feature_gate::GateIssue::Language,
                                            feature_gate::EXPLAIN_CUSTOM_DERIVE);
         } else {
+            cx.span_warn(titem.span, EXPLAIN_DEPR_CUSTOM_DERIVE);
             let name = intern_and_get_ident(&format!("derive_{}", tname));
             let mitem = cx.meta_word(titem.span, name);
             new_attributes.push(cx.attribute(mitem.span, mitem));