diff --git a/src/expr.rs b/src/expr.rs index cfecc9b9d89..8bf027de3c1 100644 --- a/src/expr.rs +++ b/src/expr.rs @@ -2110,7 +2110,12 @@ fn shape_from_rhs_tactic( shape: Shape, rhs_tactic: RhsTactics, ) -> Option { + let using_version_2 = context.config.version() == Version::Two; + let no_indent = shape.indent.width() == 0; match rhs_tactic { + RhsTactics::ForceNextLineWithoutIndent if no_indent && using_version_2 => shape + .with_max_width(context.config) + .sub_width(context.config.tab_spaces()), RhsTactics::ForceNextLineWithoutIndent => shape .with_max_width(context.config) .sub_width(shape.indent.width()), diff --git a/tests/source/issue_5321.rs b/tests/source/issue_5321.rs new file mode 100644 index 00000000000..dfaeb64383d --- /dev/null +++ b/tests/source/issue_5321.rs @@ -0,0 +1,19 @@ +// rustfmt-version: Two + +trait AllTheOthers1: Trait3 + Trait4 + Trait5 + Trait6 + Trait7 + Trait8 + Trait9 + Trait10 + Trait11 + Trait12 + Trait14 +{ +} + +trait AllTheOthers2: Trait4 + Trait5 + Trait6 + Trait7 + Trait8 + Trait9 + Trait10 + Trait11 + Trait12 + Trait13 + Trait15 +{ +} + +mod Module { + trait AllTheOthers3: Trait5 + Trait6 + Trait7 + Trait8 + Trait9 + Trait10 + Trait11 + Trait12 + Trait13 + Trait14 + { + } + + trait AllTheOthers4: Trait6 + Trait7 + Trait8 + Trait9 + Trait10 + Trait11 + Trait12 + Trait13 + Trait14 + Trait15 + { + } +} diff --git a/tests/target/issue_5321.rs b/tests/target/issue_5321.rs new file mode 100644 index 00000000000..b67d047bb5b --- /dev/null +++ b/tests/target/issue_5321.rs @@ -0,0 +1,52 @@ +// rustfmt-version: Two + +trait AllTheOthers1: + Trait3 + + Trait4 + + Trait5 + + Trait6 + + Trait7 + + Trait8 + + Trait9 + + Trait10 + + Trait11 + + Trait12 + + Trait14 +{ +} + +trait AllTheOthers2: + Trait4 + + Trait5 + + Trait6 + + Trait7 + + Trait8 + + Trait9 + + Trait10 + + Trait11 + + Trait12 + + Trait13 + + Trait15 +{ +} + +mod Module { + trait AllTheOthers3: + Trait5 + Trait6 + Trait7 + Trait8 + Trait9 + Trait10 + Trait11 + Trait12 + Trait13 + Trait14 + { + } + + trait AllTheOthers4: + Trait6 + + Trait7 + + Trait8 + + Trait9 + + Trait10 + + Trait11 + + Trait12 + + Trait13 + + Trait14 + + Trait15 + { + } +}