about summary refs log tree commit diff
path: root/src/libsyntax/ext/base.rs
diff options
context:
space:
mode:
authorHuon Wilson <dbau.pp+github@gmail.com>2015-01-25 10:28:58 +1100
committerHuon Wilson <dbau.pp+github@gmail.com>2015-01-25 10:44:56 +1100
commitae4e1a190be74024997551d2fe8c183866fc1cc5 (patch)
tree40771e090f7cd92a9dd0a6f10a9abf6d3d37e139 /src/libsyntax/ext/base.rs
parent4be79d6acde9eed3a9b5281a46f385bcb4ce736c (diff)
downloadrust-ae4e1a190be74024997551d2fe8c183866fc1cc5.tar.gz
rust-ae4e1a190be74024997551d2fe8c183866fc1cc5.zip
Tell the compiler to tell us that `deriving` is dead.
I'm beginning to suspect it's impossible to avoid accidentally writing
`#[deriving]` at least once in every program, and it results in
non-intuitive error messages: "Foo doesn't have any method in scope
`clone`" despite there being a `#[deriv...(Clone)]` attribute!

Also, lots of documentation around the internet uses `#[deriving]` so
providing this guidance is very helpful (lots of people ask in #rust
about this error).

Fixes #21166.
Diffstat (limited to 'src/libsyntax/ext/base.rs')
-rw-r--r--src/libsyntax/ext/base.rs2
1 files changed, 2 insertions, 0 deletions
diff --git a/src/libsyntax/ext/base.rs b/src/libsyntax/ext/base.rs
index 9128bc05f6f..ef8010927dc 100644
--- a/src/libsyntax/ext/base.rs
+++ b/src/libsyntax/ext/base.rs
@@ -467,6 +467,8 @@ fn initial_syntax_expander_table(ecfg: &expand::ExpansionConfig) -> SyntaxEnv {
                                     ext::log_syntax::expand_syntax_ext));
     syntax_expanders.insert(intern("derive"),
                             Decorator(box ext::deriving::expand_meta_derive));
+    syntax_expanders.insert(intern("deriving"),
+                            Decorator(box ext::deriving::expand_deprecated_deriving));
 
     if ecfg.enable_quotes {
         // Quasi-quoting expanders