diff --git a/src/missed_spans.rs b/src/missed_spans.rs index 0242094a752..f45a1242c97 100644 --- a/src/missed_spans.rs +++ b/src/missed_spans.rs @@ -245,7 +245,9 @@ impl<'a> FmtVisitor<'a> { .rev() .find(|rev_c| ![' ', '\t'].contains(rev_c)); - let fix_indent = last_char.map_or(true, |rev_c| ['{', '\n'].contains(&rev_c)); + let starts_output_line = !self.buffer.is_empty() && self.buffer.ends_with('\n'); + let fix_indent = + starts_output_line || last_char.map_or(true, |rev_c| ['{', '\n'].contains(&rev_c)); let mut on_same_line = false; let comment_indent = if fix_indent { diff --git a/tests/source/issue-7019.rs b/tests/source/issue-7019.rs new file mode 100644 index 00000000000..ebb7557fa4e --- /dev/null +++ b/tests/source/issue-7019.rs @@ -0,0 +1,36 @@ +fn two() -> usize { + /*A*/ /*B*/ + 1 + 2 +} + +fn three() -> usize { + /*A*/ /*B*/ /*C*/ + 1 + 2 +} + +fn nested() -> usize { + { + { + /*A*/ /*B*/ /*C*/ + 1 + 2 + } + } +} + +fn between_statements() -> usize { + let a = 1; + /*A*/ /*B*/ + let b = 2; + a + b +} + +fn trailing_inline() -> usize { + let a = 1; /*trailing*/ + a +} + +fn already_canonical() -> usize { + /*A*/ + /*B*/ + 1 + 2 +} diff --git a/tests/target/issue-7019.rs b/tests/target/issue-7019.rs new file mode 100644 index 00000000000..62f4383aac5 --- /dev/null +++ b/tests/target/issue-7019.rs @@ -0,0 +1,42 @@ +fn two() -> usize { + /*A*/ + /*B*/ + 1 + 2 +} + +fn three() -> usize { + /*A*/ + /*B*/ + /*C*/ + 1 + 2 +} + +fn nested() -> usize { + { + { + /*A*/ + /*B*/ + /*C*/ + 1 + 2 + } + } +} + +fn between_statements() -> usize { + let a = 1; + /*A*/ + /*B*/ + let b = 2; + a + b +} + +fn trailing_inline() -> usize { + let a = 1; /*trailing*/ + a +} + +fn already_canonical() -> usize { + /*A*/ + /*B*/ + 1 + 2 +}