diff --git a/src/items.rs b/src/items.rs index a2c0e8e0f50..da70c819ad8 100644 --- a/src/items.rs +++ b/src/items.rs @@ -430,6 +430,10 @@ impl<'a> FmtVisitor<'a> { ) -> Option<(String, FnBraceStyle)> { let context = self.get_context(); + if out_of_file_lines_range!(self, span) { + return Some((context.snippet(span).to_owned(), FnBraceStyle::None)); + } + let mut fn_brace_style = newline_for_brace(self.config, &fn_sig.generics.where_clause); let (result, _, force_newline_brace) = rewrite_fn_base(&context, indent, ident, fn_sig, span, fn_brace_style).ok()?; diff --git a/src/visitor.rs b/src/visitor.rs index 4072a1d8697..14f60658054 100644 --- a/src/visitor.rs +++ b/src/visitor.rs @@ -429,7 +429,7 @@ impl<'b, 'a: 'b> FmtVisitor<'a> { FnBraceStyle::NextLine => { self.push_str(&self.block_indent.to_string_with_newline(self.config)) } - _ => unreachable!(), + FnBraceStyle::None => {} } self.last_pos = source!(self, block.span).lo(); } else { diff --git a/tests/source/issue-6864.rs b/tests/source/issue-6864.rs new file mode 100644 index 00000000000..ebdb59c1a5c --- /dev/null +++ b/tests/source/issue-6864.rs @@ -0,0 +1,13 @@ +// rustfmt-file_lines: [{"file":"tests/source/issue-6864.rs","range":[10,12]}] + +fn messy_signature( +a: i32, +b: bool, +) + + { +println!("weeeeeee"); +let x = +a + b +as i32; +} diff --git a/tests/target/issue-6864.rs b/tests/target/issue-6864.rs new file mode 100644 index 00000000000..de5b055eb51 --- /dev/null +++ b/tests/target/issue-6864.rs @@ -0,0 +1,11 @@ +// rustfmt-file_lines: [{"file":"tests/source/issue-6864.rs","range":[10,12]}] + +fn messy_signature( +a: i32, +b: bool, +) + + { +println!("weeeeeee"); + let x = a + b as i32; +}