From ecd79a125b333e2e38fa1e0f6156438659c283db Mon Sep 17 00:00:00 2001 From: est31 Date: Fri, 4 Nov 2016 22:37:51 +0100 Subject: Add error when proc_macro_derive is used not on functions Fixes #37590 --- src/libsyntax_ext/proc_macro_registrar.rs | 11 +++++++++++ 1 file changed, 11 insertions(+) (limited to 'src/libsyntax_ext') diff --git a/src/libsyntax_ext/proc_macro_registrar.rs b/src/libsyntax_ext/proc_macro_registrar.rs index f49a5f0e070..a8accd63dcf 100644 --- a/src/libsyntax_ext/proc_macro_registrar.rs +++ b/src/libsyntax_ext/proc_macro_registrar.rs @@ -105,6 +105,17 @@ impl<'a> Visitor for CollectCustomDerives<'a> { match item.node { ast::ItemKind::Fn(..) => {} _ => { + // Check for invalid use of proc_macro_derive + let attr = item.attrs.iter() + .filter(|a| a.check_name("proc_macro_derive")) + .next(); + if let Some(attr) = attr { + self.handler.span_err(attr.span(), + "the `#[proc_macro_derive]` \ + attribute may only be used \ + on bare functions"); + return; + } self.check_not_pub_in_root(&item.vis, item.span); return visit::walk_item(self, item) } -- cgit 1.4.1-3-g733a5