diff --git a/src/expr.rs b/src/expr.rs index 29d6d32c0dd..6a34257eca3 100644 --- a/src/expr.rs +++ b/src/expr.rs @@ -1364,6 +1364,9 @@ fn rewrite_struct_lit<'a>(context: &RewriteContext, _ => v_budget, }; + let ends_with_newline = context.config.struct_lit_style != StructLitStyle::Visual && + tactic == DefinitiveListTactic::Vertical; + let fmt = ListFormatting { tactic: tactic, separator: ",", @@ -1374,11 +1377,7 @@ fn rewrite_struct_lit<'a>(context: &RewriteContext, }, indent: indent, width: budget, - ends_with_newline: match tactic { - DefinitiveListTactic::Horizontal => false, - DefinitiveListTactic::Vertical => true, - DefinitiveListTactic::Mixed => unreachable!(), - }, + ends_with_newline: ends_with_newline, config: context.config, }; let fields_str = try_opt!(write_list(&item_vec, &fmt)); diff --git a/tests/source/struct_lits_visual.rs b/tests/source/struct_lits_visual.rs index f483b08b625..c7534eff7cb 100644 --- a/tests/source/struct_lits_visual.rs +++ b/tests/source/struct_lits_visual.rs @@ -25,6 +25,9 @@ fn main() { Quux { x: if cond { bar(); }, y: baz() }; + Baz { x: yxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx, 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 hendrerit. Donec et mollis dolor. first: item(), diff --git a/tests/target/struct_lits_visual.rs b/tests/target/struct_lits_visual.rs index 5ebc3a8684f..d5978c3debb 100644 --- a/tests/target/struct_lits_visual.rs +++ b/tests/target/struct_lits_visual.rs @@ -42,6 +42,9 @@ fn main() { }, y: baz(), }; + Baz { x: yxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx, + 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 // hendrerit. Donec et mollis dolor.