diff --git a/src/macros.rs b/src/macros.rs index a2c1f2438792..ca0de8fbb237 100644 --- a/src/macros.rs +++ b/src/macros.rs @@ -256,7 +256,19 @@ pub fn rewrite_macro_inner( } DelimToken::Paren => Some(format!("{}()", macro_name)), DelimToken::Bracket => Some(format!("{}[]", macro_name)), - DelimToken::Brace => Some(format!("{}{{}}", macro_name)), + DelimToken::Brace => { + // Preserve at most one space before the braces. + let char_after_bang = context + .snippet(mac.span) + .split('!') + .nth(1) + .and_then(|x| x.chars().next()); + if let Some(' ') = char_after_bang { + Some(format!("{} {{}}", macro_name)) + } else { + Some(format!("{}{{}}", macro_name)) + } + } _ => unreachable!(), }; } diff --git a/tests/source/macros.rs b/tests/source/macros.rs index c828ffb881a7..383fc723b5b6 100644 --- a/tests/source/macros.rs +++ b/tests/source/macros.rs @@ -106,6 +106,9 @@ fn main() { impl X { empty_invoc!{} + + // Don't format empty either! + empty_invoc! {} } fn issue_1279() { diff --git a/tests/target/macros.rs b/tests/target/macros.rs index e16159ced101..70ed0b042fe1 100644 --- a/tests/target/macros.rs +++ b/tests/target/macros.rs @@ -132,6 +132,9 @@ fn main() { impl X { empty_invoc!{} + + // Don't format empty either! + empty_invoc! {} } fn issue_1279() {