about summary refs log tree commit diff
path: root/src/libsyntax
diff options
context:
space:
mode:
authorbors <bors@rust-lang.org>2014-11-26 15:07:23 +0000
committerbors <bors@rust-lang.org>2014-11-26 15:07:23 +0000
commit930f87774db33f8a8963b22e82e1b1d1907ea30a (patch)
tree67461888220684e734511e9e9a5c39eb54f8f7a7 /src/libsyntax
parent8fb027e398ef756b7b02a270ef0304be92e70f4d (diff)
parent6a5fc50782905cede94ae9bdaa04e3b07347c4be (diff)
downloadrust-930f87774db33f8a8963b22e82e1b1d1907ea30a.tar.gz
rust-930f87774db33f8a8963b22e82e1b1d1907ea30a.zip
auto merge of #19262 : murarth/rust/module-path-fix, r=jakub-
Closes #18859
Diffstat (limited to 'src/libsyntax')
-rw-r--r--src/libsyntax/ext/expand.rs11
1 files changed, 9 insertions, 2 deletions
diff --git a/src/libsyntax/ext/expand.rs b/src/libsyntax/ext/expand.rs
index 04132679a03..a697d332d16 100644
--- a/src/libsyntax/ext/expand.rs
+++ b/src/libsyntax/ext/expand.rs
@@ -412,12 +412,19 @@ pub fn expand_item(it: P<ast::Item>, fld: &mut MacroExpander)
     let mut new_items = match it.node {
         ast::ItemMac(..) => expand_item_mac(it, fld),
         ast::ItemMod(_) | ast::ItemForeignMod(_) => {
-            fld.cx.mod_push(it.ident);
+            let valid_ident =
+                it.ident.name != parse::token::special_idents::invalid.name;
+
+            if valid_ident {
+                fld.cx.mod_push(it.ident);
+            }
             let macro_escape = contains_macro_escape(new_attrs.as_slice());
             let result = with_exts_frame!(fld.cx.syntax_env,
                                           macro_escape,
                                           noop_fold_item(it, fld));
-            fld.cx.mod_pop();
+            if valid_ident {
+                fld.cx.mod_pop();
+            }
             result
         },
         _ => {