diff --git a/.gitignore b/.gitignore index 71cf88f79e6..50e734390d7 100644 --- a/.gitignore +++ b/.gitignore @@ -23,3 +23,6 @@ tests/cargo-fmt/**/target .idea/ .vscode/ *~ + +# Git +.git/ diff --git a/src/items.rs b/src/items.rs index 35591df0fd8..de9002d3703 100644 --- a/src/items.rs +++ b/src/items.rs @@ -131,14 +131,23 @@ impl Rewrite for ast::Local { .sub_width(1) .max_width_error(shape.width, self.span())?; - result = rewrite_assign_rhs( + // should always find a comment span if init exists + let comment_span = context + .snippet_provider + .opt_span_after(self.span, "=") + .map(|op_lo| mk_sp(op_lo, init.span.lo())) + .unwrap(); + + result = rewrite_assign_rhs_with_comments( context, result, init, - &RhsAssignKind::Expr(&init.kind, init.span), nested_shape, - ) - .max_width_error(shape.width, self.span())?; + &RhsAssignKind::Expr(&init.kind, init.span), + RhsTactics::Default, + comment_span, + true, + )?; if let Some(block) = else_block { let else_kw_span = init.span.between(block.span); diff --git a/tests/source/issue-6246.rs b/tests/source/issue-6246.rs new file mode 100644 index 00000000000..3caf0768f83 --- /dev/null +++ b/tests/source/issue-6246.rs @@ -0,0 +1,42 @@ +fn main() { + let foo = + // 114514 + if true { + 1919 + } else { + 810 + }; +} + +fn main() { + let foo = + // line 1 + // line 2 + if true { + 1919 + } else { + 810 + }; +} + +fn main() { + let foo = + /* line 1 + line 2 */ + if true { + 1919 + } else { + 810 + }; +} + +// Test a let statement without equal sign +fn main() { + let mut foo ; + // 114514 + foo = if true { + 1919 + } else { + 810 + }; +} diff --git a/tests/target/issue-6246.rs b/tests/target/issue-6246.rs new file mode 100644 index 00000000000..2dfefc9a8d3 --- /dev/null +++ b/tests/target/issue-6246.rs @@ -0,0 +1,26 @@ +fn main() { + let foo = + // 114514 + if true { 1919 } else { 810 }; +} + +fn main() { + let foo = + // line 1 + // line 2 + if true { 1919 } else { 810 }; +} + +fn main() { + let foo = + /* line 1 + line 2 */ + if true { 1919 } else { 810 }; +} + +// Test a let statement without equal sign +fn main() { + let mut foo; + // 114514 + foo = if true { 1919 } else { 810 }; +}