diff options
| author | Vadim Chugunov <vadimcn@gmail.com> | 2015-01-22 17:34:31 -0800 |
|---|---|---|
| committer | Vadim Chugunov <vadimcn@gmail.com> | 2015-01-22 17:45:43 -0800 |
| commit | 27a261be3ee99664c1f05eb1a17ec9e384da6d7b (patch) | |
| tree | 94e18395158288c47983adb1ac10bdb6d481bf32 | |
| parent | b7930d93d9b57beaeabfeb43cf78fc8161ecd46c (diff) | |
| download | rust-27a261be3ee99664c1f05eb1a17ec9e384da6d7b.tar.gz rust-27a261be3ee99664c1f05eb1a17ec9e384da6d7b.zip | |
Suppress space after idents with "ModName" style in serialization of exported macros.
Fixes issue #20701
| -rw-r--r-- | src/libsyntax/print/pprust.rs | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/src/libsyntax/print/pprust.rs b/src/libsyntax/print/pprust.rs index 42f156d6a11..dbe4241b8e6 100644 --- a/src/libsyntax/print/pprust.rs +++ b/src/libsyntax/print/pprust.rs @@ -1164,11 +1164,20 @@ impl<'a> State<'a> { pub fn print_tts(&mut self, tts: &[ast::TokenTree]) -> IoResult<()> { try!(self.ibox(0)); + let mut suppress_space = false; for (i, tt) in tts.iter().enumerate() { - if i != 0 { + if i != 0 && !suppress_space { try!(space(&mut self.s)); } try!(self.print_tt(tt)); + // There should be no space between the module name and the following `::` in paths, + // otherwise imported macros get re-parsed from crate metadata incorrectly (issue #20701) + suppress_space = match tt { + &ast::TtToken(_, token::Ident(_, token::ModName)) | + &ast::TtToken(_, token::MatchNt(_, _, _, token::ModName)) | + &ast::TtToken(_, token::SubstNt(_, token::ModName)) => true, + _ => false + } } self.end() } |
