Fix formatting failures on Windows

When newline_style is set to Windows, an empty line inside of a macro
results in `\r` being passed to the `fold()` in `MacroBranch::rewrite()`.

`\r` is technically not an empty string, so we try to indent it, leaving
trailing whitespaces behind, even though that was not intended
(as far as I can see).

This commit replaces the `!l.is_empty()` check with calling
`is_empty_line()`, since trying to indent any whitespace-only string
will probably result in problematic trailing whitespaces.

Fixes: #2810
This commit is contained in:
Ivan Komarov 2018-10-27 04:01:37 +03:00
parent 8fb1b179bf
commit 00a20bceff
2 changed files with 15 additions and 1 deletions

View File

@ -1347,7 +1347,7 @@ impl MacroBranch {
.fold(
(String::new(), true),
|(mut s, need_indent), (i, (kind, ref l))| {
if !l.is_empty()
if !is_empty_line(l)
&& need_indent
&& !new_body_snippet.is_line_non_formatted(i + 1)
{

View File

@ -0,0 +1,14 @@
// rustfmt-newline_style: Windows
#[macro_export]
macro_rules! hmmm___ffi_error {
($result:ident) => {
pub struct $result {
success: bool,
}
impl $result {
pub fn foo(self) {}
}
};
}