about summary refs log tree commit diff
path: root/src/librustc_resolve
diff options
context:
space:
mode:
authorJeffrey Seyfried <jeffrey.seyfried@gmail.com>2016-10-02 05:49:56 +0000
committerJeffrey Seyfried <jeffrey.seyfried@gmail.com>2016-10-02 06:02:47 +0000
commitc9f81190f2228a8b2c4fba4f3494773e10f70e96 (patch)
tree4b9abf79522c6465add453b6fd1c4108cb6795c5 /src/librustc_resolve
parent797eb57aa8a82716dc493a98e0ba595da0253001 (diff)
downloadrust-c9f81190f2228a8b2c4fba4f3494773e10f70e96.tar.gz
rust-c9f81190f2228a8b2c4fba4f3494773e10f70e96.zip
Refactor `ext::base::Resolver::add_ext` to only define macros in the crate root.
Diffstat (limited to 'src/librustc_resolve')
-rw-r--r--src/librustc_resolve/macros.rs19
1 files changed, 11 insertions, 8 deletions
diff --git a/src/librustc_resolve/macros.rs b/src/librustc_resolve/macros.rs
index b8999426904..4068c34a7f9 100644
--- a/src/librustc_resolve/macros.rs
+++ b/src/librustc_resolve/macros.rs
@@ -74,8 +74,16 @@ impl<'a> base::Resolver for Resolver<'a> {
             self.session.span_err(def.span, "user-defined macros may not be named `macro_rules`");
         }
         if def.use_locally {
+            self.macro_names.insert(def.ident.name);
             let ext = macro_rules::compile(&self.session.parse_sess, &def);
-            self.add_ext(scope, def.ident, Rc::new(ext));
+
+            let mut module = self.expansion_data[&scope].module;
+            while module.macros_escape {
+                module = module.parent.unwrap();
+            }
+            module.macros.borrow_mut().insert(def.ident.name, NameBinding {
+                ext: Rc::new(ext),
+            });
         }
         if def.export {
             def.id = self.next_node_id();
@@ -83,16 +91,11 @@ impl<'a> base::Resolver for Resolver<'a> {
         }
     }
 
-    fn add_ext(&mut self, scope: Mark, ident: ast::Ident, ext: Rc<SyntaxExtension>) {
+    fn add_ext(&mut self, ident: ast::Ident, ext: Rc<SyntaxExtension>) {
         if let NormalTT(..) = *ext {
             self.macro_names.insert(ident.name);
         }
-
-        let mut module = self.expansion_data[&scope].module;
-        while module.macros_escape {
-            module = module.parent.unwrap();
-        }
-        module.macros.borrow_mut().insert(ident.name, NameBinding {
+        self.graph_root.macros.borrow_mut().insert(ident.name, NameBinding {
             ext: ext,
         });
     }