From 1a3bc79c686e246cb5088ed16bdc648d1564ffb2 Mon Sep 17 00:00:00 2001 From: Kevin Stenerson Date: Mon, 5 Nov 2018 22:48:49 -0700 Subject: [PATCH] Preserve possibly one whitespace for brace macros --- src/macros.rs | 14 +++++++++++++- tests/source/macros.rs | 3 +++ tests/target/macros.rs | 3 +++ 3 files changed, 19 insertions(+), 1 deletion(-) diff --git a/src/macros.rs b/src/macros.rs index a2c1f243879..ca0de8fbb23 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 c828ffb881a..383fc723b5b 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 e16159ced10..70ed0b042fe 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() {