diff options
| author | bors <bors@rust-lang.org> | 2018-07-14 04:19:44 +0000 |
|---|---|---|
| committer | bors <bors@rust-lang.org> | 2018-07-14 04:19:44 +0000 |
| commit | ccade97544d34f42c37fc27fe8c7edba05d3eddb (patch) | |
| tree | a6390880de2c6e92cd89d783b31644ba47b17cad /src/libsyntax_ext | |
| parent | dd1f69bd8630e0e26cb0ff56c6d412efad4097b1 (diff) | |
| parent | edffb2fcf077bc944ef508fe1578786547d49dc8 (diff) | |
| download | rust-ccade97544d34f42c37fc27fe8c7edba05d3eddb.tar.gz rust-ccade97544d34f42c37fc27fe8c7edba05d3eddb.zip | |
Auto merge of #52328 - petrochenkov:pmroot, r=alexcrichton
proc_macro: Fix crate root detection Fixes https://github.com/rust-lang/rust/issues/52270
Diffstat (limited to 'src/libsyntax_ext')
| -rw-r--r-- | src/libsyntax_ext/proc_macro_registrar.rs | 16 |
1 files changed, 6 insertions, 10 deletions
diff --git a/src/libsyntax_ext/proc_macro_registrar.rs b/src/libsyntax_ext/proc_macro_registrar.rs index 85aa84acc42..ab2bb446631 100644 --- a/src/libsyntax_ext/proc_macro_registrar.rs +++ b/src/libsyntax_ext/proc_macro_registrar.rs @@ -12,7 +12,7 @@ use std::mem; use errors; -use syntax::ast::{self, Ident, NodeId}; +use syntax::ast::{self, Ident}; use syntax::attr; use syntax::codemap::{ExpnInfo, MacroAttribute, hygiene, respan}; use syntax::ext::base::ExtCtxt; @@ -293,7 +293,10 @@ impl<'a> Visitor<'a> for CollectProcMacros<'a> { let attr = match found_attr { None => { self.check_not_pub_in_root(&item.vis, item.span); - return visit::walk_item(self, item); + let prev_in_root = mem::replace(&mut self.in_root, false); + visit::walk_item(self, item); + self.in_root = prev_in_root; + return; }, Some(attr) => attr, }; @@ -326,15 +329,8 @@ impl<'a> Visitor<'a> for CollectProcMacros<'a> { self.collect_bang_proc_macro(item, attr); }; + let prev_in_root = mem::replace(&mut self.in_root, false); visit::walk_item(self, item); - } - - fn visit_mod(&mut self, m: &'a ast::Mod, _s: Span, _a: &[ast::Attribute], id: NodeId) { - let mut prev_in_root = self.in_root; - if id != ast::CRATE_NODE_ID { - prev_in_root = mem::replace(&mut self.in_root, false); - } - visit::walk_mod(self, m); self.in_root = prev_in_root; } |
