diff --git a/Configurations.md b/Configurations.md index 824868bca09..66b5d840f3c 100644 --- a/Configurations.md +++ b/Configurations.md @@ -236,7 +236,7 @@ fn main() { ```rust fn main() { let lorem = Lorem { ipsum: dolor, - sit: amet, }; + sit: amet }; } ``` diff --git a/src/expr.rs b/src/expr.rs index cd620569851..aa5545c8161 100644 --- a/src/expr.rs +++ b/src/expr.rs @@ -1610,7 +1610,7 @@ fn rewrite_struct_lit<'a>( nested_shape, tactic, context, - force_no_trailing_comma || base.is_some(), + force_no_trailing_comma || base.is_some() || !context.use_block_indent(), ); write_list(&item_vec, &fmt)? diff --git a/tests/source/issue-3066.rs b/tests/source/issue-3066.rs new file mode 100644 index 00000000000..4d1ece43def --- /dev/null +++ b/tests/source/issue-3066.rs @@ -0,0 +1,7 @@ +// rustfmt-indent_style: Visual +fn main() { + Struct { field: aaaaaaaaaaa }; + Struct { field: aaaaaaaaaaaa, }; + Struct { field: value, + field2: value2, }; +} diff --git a/tests/target/chains-visual.rs b/tests/target/chains-visual.rs index ab49096e55a..979816f3abb 100644 --- a/tests/target/chains-visual.rs +++ b/tests/target/chains-visual.rs @@ -55,11 +55,11 @@ fn main() { fn floaters() { let z = Foo { field1: val1, - field2: val2, }; + field2: val2 }; let x = Foo { field1: val1, - field2: val2, }.method_call() - .method_call(); + field2: val2 }.method_call() + .method_call(); let y = if cond { val1 } else { val2 }.method_call(); @@ -89,11 +89,11 @@ fn floaters() { .quux(); Foo { y: i_am_multi_line, - z: ok, }.baz(|| { - force(); - multiline(); - }) - .quux(); + z: ok }.baz(|| { + force(); + multiline(); + }) + .quux(); a + match x { true => "yay!", diff --git a/tests/target/configs/indent_style/visual_struct_lit.rs b/tests/target/configs/indent_style/visual_struct_lit.rs index b4effba0e8a..ec49021d330 100644 --- a/tests/target/configs/indent_style/visual_struct_lit.rs +++ b/tests/target/configs/indent_style/visual_struct_lit.rs @@ -3,5 +3,5 @@ fn main() { let lorem = Lorem { ipsum: dolor, - sit: amet, }; + sit: amet }; } diff --git a/tests/target/issue-3066.rs b/tests/target/issue-3066.rs new file mode 100644 index 00000000000..d4dccc97e48 --- /dev/null +++ b/tests/target/issue-3066.rs @@ -0,0 +1,7 @@ +// rustfmt-indent_style: Visual +fn main() { + Struct { field: aaaaaaaaaaa }; + Struct { field: aaaaaaaaaaaa }; + Struct { field: value, + field2: value2 }; +} diff --git a/tests/target/struct_lits_visual.rs b/tests/target/struct_lits_visual.rs index 00e17589db1..a9627fb90f5 100644 --- a/tests/target/struct_lits_visual.rs +++ b/tests/target/struct_lits_visual.rs @@ -20,17 +20,17 @@ fn main() { Foooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo { // Comment a: foo(), /* Comment */ // Comment - b: bar(), /* Comment */ }; + b: bar() /* Comment */ }; Foo { a: Bar, b: f() }; Quux { x: if cond { bar(); }, - y: baz(), }; + y: baz() }; Baz { x: yxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx, - z: zzzzz, /* test */ }; + z: zzzzz /* test */ }; A { // Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec a diam lectus. Sed sit // amet ipsum mauris. Maecenas congue ligula ac quam viverra nec consectetur ante @@ -38,12 +38,12 @@ fn main() { first: item(), // Praesent et diam eget libero egestas mattis sit amet vitae augue. // Nam tincidunt congue enim, ut porta lorem lacinia consectetur. - second: Item, }; + second: Item }; Diagram { // o This graph demonstrates how // / \ significant whitespace is // o o preserved. // /|\ \ // o o o o - graph: G, } + graph: G } } diff --git a/tests/target/struct_lits_visual_multiline.rs b/tests/target/struct_lits_visual_multiline.rs index d9312b7af4d..3f43ef0c981 100644 --- a/tests/target/struct_lits_visual_multiline.rs +++ b/tests/target/struct_lits_visual_multiline.rs @@ -17,20 +17,20 @@ fn main() { ..something }; Fooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo { a: foo(), - b: bar(), }; + b: bar() }; Foooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo { // Comment a: foo(), /* Comment */ // Comment - b: bar(), /* Comment */ }; + b: bar() /* Comment */ }; Foo { a: Bar, - b: foo(), }; + b: foo() }; Quux { x: if cond { bar(); }, - y: baz(), }; + y: baz() }; A { // Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec a diam lectus. Sed sit // amet ipsum mauris. Maecenas congue ligula ac quam viverra nec consectetur ante @@ -38,12 +38,12 @@ fn main() { first: item(), // Praesent et diam eget libero egestas mattis sit amet vitae augue. // Nam tincidunt congue enim, ut porta lorem lacinia consectetur. - second: Item, }; + second: Item }; Diagram { // o This graph demonstrates how // / \ significant whitespace is // o o preserved. // /|\ \ // o o o o - graph: G, } + graph: G } }