]> git.lizzy.rs Git - rust.git/commitdiff
Rename CustomDerive to ProcMacroDerive for macros 1.1
authorJosh Driver <keeperofdakeys@gmail.com>
Mon, 23 Jan 2017 22:25:08 +0000 (08:55 +1030)
committerJosh Driver <keeperofdakeys@gmail.com>
Sat, 4 Feb 2017 23:01:02 +0000 (09:31 +1030)
12 files changed:
src/librustc_metadata/creader.rs
src/librustc_resolve/build_reduced_graph.rs
src/libsyntax/ext/base.rs
src/libsyntax/ext/expand.rs
src/libsyntax_ext/deriving/custom.rs
src/libsyntax_ext/deriving/mod.rs
src/libsyntax_ext/proc_macro_registrar.rs
src/test/compile-fail-fulldeps/proc-macro/derive-bad.rs
src/test/compile-fail-fulldeps/proc-macro/load-panic.rs
src/test/compile-fail-fulldeps/proc-macro/no-macro-use-attr.rs
src/test/compile-fail/no-link.rs
src/test/ui/custom-derive/issue-36935.stderr

index 161331b1728bcd0deb0973b3a52ff1d45e6faec1..8cb123b54f1676e92861b89c99842103177e58f1 100644 (file)
@@ -577,7 +577,7 @@ fn load_derive_macros(&mut self, root: &CrateRoot, dylib: Option<PathBuf>, span:
         use proc_macro::TokenStream;
         use proc_macro::__internal::Registry;
         use rustc_back::dynamic_lib::DynamicLibrary;
-        use syntax_ext::deriving::custom::CustomDerive;
+        use syntax_ext::deriving::custom::ProcMacroDerive;
         use syntax_ext::proc_macro_impl::AttrProcMacro;
 
         let path = match dylib {
@@ -609,8 +609,8 @@ fn register_custom_derive(&mut self,
                                       expand: fn(TokenStream) -> TokenStream,
                                       attributes: &[&'static str]) {
                 let attrs = attributes.iter().cloned().map(Symbol::intern).collect();
-                let derive = SyntaxExtension::CustomDerive(
-                    Box::new(CustomDerive::new(expand, attrs))
+                let derive = SyntaxExtension::ProcMacroDerive(
+                    Box::new(ProcMacroDerive::new(expand, attrs))
                 );
                 self.0.push((Symbol::intern(trait_name), Rc::new(derive)));
             }
index eb6c7f4bed5deaddb2cdeec5528afc97a4f3d2b0..4679b6be88b6f0835a06e410c37af1082423455a 100644 (file)
@@ -559,7 +559,7 @@ fn process_legacy_macro_imports(&mut self, item: &Item, module: Module<'a>, expa
                       "an `extern crate` loading macros must be at the crate root");
         } else if !self.use_extern_macros && !used &&
                   self.session.cstore.dep_kind(module.def_id().unwrap().krate).macros_only() {
-            let msg = "custom derive crates and `#[no_link]` crates have no effect without \
+            let msg = "proc macro crates and `#[no_link]` crates have no effect without \
                        `#[macro_use]`";
             self.session.span_warn(item.span, msg);
             used = true; // Avoid the normal unused extern crate warning
index 231e2e6205cf8a3966b97c6df27b21aae1bcd945..17b0b97468df850fbde38ebf3ae7ca8a67289847 100644 (file)
@@ -510,7 +510,11 @@ pub enum SyntaxExtension {
     ///
     IdentTT(Box<IdentMacroExpander>, Option<Span>, bool),
 
-    CustomDerive(Box<MultiItemModifier>),
+    /// An attribute-like procedural macro. TokenStream -> TokenStream.
+    /// The input is the annotated item.
+    /// Allows generating code to implement a Trait for a given struct
+    /// or enum item.
+    ProcMacroDerive(Box<MultiItemModifier>),
 
     /// An attribute-like procedural macro that derives a builtin trait.
     BuiltinDerive(BuiltinDeriveFn),
index 0e5d94e03810f62d78880dfa967b1bf3b1d6ed32..01a8c215d47aa650a8c2143ab68471a8e278b3b9 100644 (file)
@@ -370,7 +370,7 @@ fn expand_attr_invoc(&mut self, invoc: Invocation, ext: Rc<SyntaxExtension>) ->
                 let tok_result = mac.expand(self.cx, attr.span, attr_toks, item_toks);
                 self.parse_expansion(tok_result, kind, name, attr.span)
             }
-            SyntaxExtension::CustomDerive(..) | SyntaxExtension::BuiltinDerive(..) => {
+            SyntaxExtension::ProcMacroDerive(..) | SyntaxExtension::BuiltinDerive(..) => {
                 self.cx.span_err(attr.span, &format!("`{}` is a derive mode", name));
                 kind.dummy(attr.span)
             }
@@ -440,7 +440,7 @@ fn expand_bang_invoc(&mut self, invoc: Invocation, ext: Rc<SyntaxExtension>) ->
                 return kind.dummy(span);
             }
 
-            SyntaxExtension::CustomDerive(..) | SyntaxExtension::BuiltinDerive(..) => {
+            SyntaxExtension::ProcMacroDerive(..) | SyntaxExtension::BuiltinDerive(..) => {
                 self.cx.span_err(path.span, &format!("`{}` is a derive mode", extname));
                 return kind.dummy(span);
             }
index 2ce6fc03f7731a5d85f230b4c167d6cacc01fa6a..e118ef1ea01f46822765a65b0907da9057a1aca1 100644 (file)
@@ -32,18 +32,18 @@ fn visit_attribute(&mut self, attr: &Attribute) {
     fn visit_mac(&mut self, _mac: &Mac) {}
 }
 
-pub struct CustomDerive {
+pub struct ProcMacroDerive {
     inner: fn(TokenStream) -> TokenStream,
     attrs: Vec<ast::Name>,
 }
 
-impl CustomDerive {
-    pub fn new(inner: fn(TokenStream) -> TokenStream, attrs: Vec<ast::Name>) -> CustomDerive {
-        CustomDerive { inner: inner, attrs: attrs }
+impl ProcMacroDerive {
+    pub fn new(inner: fn(TokenStream) -> TokenStream, attrs: Vec<ast::Name>) -> ProcMacroDerive {
+        ProcMacroDerive { inner: inner, attrs: attrs }
     }
 }
 
-impl MultiItemModifier for CustomDerive {
+impl MultiItemModifier for ProcMacroDerive {
     fn expand(&self,
               ecx: &mut ExtCtxt,
               span: Span,
@@ -54,7 +54,7 @@ fn expand(&self,
             Annotatable::Item(item) => item,
             Annotatable::ImplItem(_) |
             Annotatable::TraitItem(_) => {
-                ecx.span_err(span, "custom derive attributes may only be \
+                ecx.span_err(span, "proc_macro_derive attributes may only be \
                                     applied to struct/enum items");
                 return Vec::new()
             }
@@ -63,7 +63,7 @@ fn expand(&self,
             ItemKind::Struct(..) |
             ItemKind::Enum(..) => {},
             _ => {
-                ecx.span_err(span, "custom derive attributes may only be \
+                ecx.span_err(span, "proc_macro_derive attributes may only be \
                                     applied to struct/enum items");
                 return Vec::new()
             }
@@ -81,7 +81,7 @@ fn expand(&self,
         let stream = match res {
             Ok(stream) => stream,
             Err(e) => {
-                let msg = "custom derive attribute panicked";
+                let msg = "proc_macro_derive attribute panicked";
                 let mut err = ecx.struct_span_fatal(span, msg);
                 if let Some(s) = e.downcast_ref::<String>() {
                     err.help(&format!("message: {}", s));
@@ -100,7 +100,7 @@ fn expand(&self,
                 Ok(new_items) => new_items,
                 Err(_) => {
                     // FIXME: handle this better
-                    let msg = "custom derive produced unparseable tokens";
+                    let msg = "proc_macro_derive produced unparseable tokens";
                     ecx.struct_span_fatal(span, msg).emit();
                     panic!(FatalError);
                 }
index 30d0da588a5df0e6d3908d8069e6e35d854a7980..311b8ae41f8b9cf331dc982afecaad7e396d6cb5 100644 (file)
@@ -163,7 +163,7 @@ pub fn expand_derive(cx: &mut ExtCtxt,
         if is_builtin_trait(tname) || {
             let derive_mode = ast::Path::from_ident(titem.span, ast::Ident::with_empty_ctxt(tname));
             cx.resolver.resolve_macro(cx.current_expansion.mark, &derive_mode, false).map(|ext| {
-                if let SyntaxExtension::CustomDerive(_) = *ext { true } else { false }
+                if let SyntaxExtension::ProcMacroDerive(_) = *ext { true } else { false }
             }).unwrap_or(false)
         } {
             return true;
@@ -249,7 +249,7 @@ pub fn expand_derive(cx: &mut ExtCtxt,
             ..mitem.span
         };
 
-        if let SyntaxExtension::CustomDerive(ref ext) = *ext {
+        if let SyntaxExtension::ProcMacroDerive(ref ext) = *ext {
             return ext.expand(cx, span, &mitem, item);
         } else {
             unreachable!()
index c8af16e9242f05c8277578b04576d11c13d08b04..325f09a83ddab80860afd3524f7937ab23cd2e7c 100644 (file)
@@ -27,7 +27,7 @@
 
 use deriving;
 
-struct CustomDerive {
+struct ProcMacroDerive {
     trait_name: ast::Name,
     function_name: Ident,
     span: Span,
@@ -40,7 +40,7 @@ struct AttrProcMacro {
 }
 
 struct CollectProcMacros<'a> {
-    derives: Vec<CustomDerive>,
+    derives: Vec<ProcMacroDerive>,
     attr_macros: Vec<AttrProcMacro>,
     in_root: bool,
     handler: &'a errors::Handler,
@@ -176,7 +176,7 @@ fn collect_custom_derive(&mut self, item: &'a ast::Item, attr: &'a ast::Attribut
         };
 
         if self.in_root && item.vis == ast::Visibility::Public {
-            self.derives.push(CustomDerive {
+            self.derives.push(ProcMacroDerive {
                 span: item.span,
                 trait_name: trait_name,
                 function_name: item.ident,
@@ -319,7 +319,7 @@ fn visit_mac(&mut self, mac: &ast::Mac) {
 //          }
 //      }
 fn mk_registrar(cx: &mut ExtCtxt,
-                custom_derives: &[CustomDerive],
+                custom_derives: &[ProcMacroDerive],
                 custom_attrs: &[AttrProcMacro]) -> P<ast::Item> {
     let eid = cx.codemap().record_expansion(ExpnInfo {
         call_site: DUMMY_SP,
index a5359946c09c2626557ba7fbb023b39f9c7db5e2..bc4da9fee47ee23270ec46093e775335449d28bb 100644 (file)
@@ -16,7 +16,7 @@
 #[derive(
     A
 )]
-//~^^ ERROR: custom derive produced unparseable tokens
+//~^^ ERROR: proc_macro_derive produced unparseable tokens
 struct A;
 
 fn main() {}
index f9906b650fb878c2b7c4340025b2719c15d9bd6b..107273d012dd6c8765369c57caef2808a604897c 100644 (file)
@@ -14,7 +14,7 @@
 extern crate derive_panic;
 
 #[derive(A)]
-//~^ ERROR: custom derive attribute panicked
+//~^ ERROR: proc_macro_derive attribute panicked
 //~| HELP: message: nope!
 struct Foo;
 
index f61b8b4073b6f51aa0275e66645290284014744d..e47a4aefb5e0b67447dde7a118477e45622574ba 100644 (file)
@@ -13,7 +13,7 @@
 #![feature(rustc_attrs)]
 
 extern crate derive_a;
-//~^ WARN custom derive crates and `#[no_link]` crates have no effect without `#[macro_use]`
+//~^ WARN proc macro crates and `#[no_link]` crates have no effect without `#[macro_use]`
 
 #[rustc_error]
 fn main() {} //~ ERROR compilation successful
index d8e7411bded2cbfcaa1baa91a805c5ac0d460d6e..f74ff55e2c08e406399443b2c7a4ca49a3a3c7c1 100644 (file)
@@ -12,7 +12,7 @@
 
 #[no_link]
 extern crate empty_struct;
-//~^ WARN custom derive crates and `#[no_link]` crates have no effect without `#[macro_use]`
+//~^ WARN proc macro crates and `#[no_link]` crates have no effect without `#[macro_use]`
 
 fn main() {
     empty_struct::XEmpty1; //~ ERROR cannot find value `XEmpty1` in module `empty_struct`
index 213366a307d40decb9165d209add3f94c337a99e..ad1382cbc8e4b51e1cd8f26b4c6fd884715c6cc4 100644 (file)
@@ -1,4 +1,4 @@
-error: custom derive attribute panicked
+error: proc_macro_derive attribute panicked
   --> $DIR/issue-36935.rs:17:15
    |
 17 | #[derive(Foo, Bar)]