diff options
| author | Nick Cameron <ncameron@mozilla.com> | 2016-10-11 17:19:51 +1300 |
|---|---|---|
| committer | Nick Cameron <ncameron@mozilla.com> | 2016-10-27 11:44:42 +1300 |
| commit | b7675cf04ad1c65e86f51feddc3451b46a768d6b (patch) | |
| tree | f0f7192b6f00550160eb621fc692618b5451f1ce | |
| parent | d1b08b136c47c37cce91d65dc58f375af0d085e1 (diff) | |
| download | rust-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.rs | 7 | ||||
| -rw-r--r-- | src/libsyntax_ext/deriving/mod.rs | 1 |
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)); |
