Suppress space after idents with "ModName" style in serialization of exported macros.
Fixes issue #20701
This commit is contained in:
parent
b7930d93d9
commit
27a261be3e
@ -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()
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user