summary refs log tree commit diff
path: root/src/libsyntax
diff options
context:
space:
mode:
authorMurarth <murarth@gmail.com>2014-11-23 22:22:07 -0700
committerMurarth <murarth@gmail.com>2014-11-24 10:07:19 -0700
commita95c71e0ac3dc97468d7432d5011fbb413ba9263 (patch)
tree940adeeb748493a9dfe7a307af65967efae1e04d /src/libsyntax
parentc637cab85323c97be37d0c12bfa0fc0e9ea2c367 (diff)
downloadrust-a95c71e0ac3dc97468d7432d5011fbb413ba9263.tar.gz
rust-a95c71e0ac3dc97468d7432d5011fbb413ba9263.zip
Fixed "::::" appearing in module_path!()
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
         },
         _ => {