diff --git a/src/items.rs b/src/items.rs index 35591df0fd8..50a4c55f10a 100644 --- a/src/items.rs +++ b/src/items.rs @@ -1766,12 +1766,24 @@ fn rewrite_ty( result.push_str(&generics_str); } - if let Some(bounds) = generic_bounds_opt { - if !bounds.is_empty() { + if let Some(bounds) = generic_bounds_opt + && !bounds.is_empty() + { + if context.config.style_edition() <= StyleEdition::Edition2021 { // 2 = `: ` let shape = Shape::indented(indent, context.config).offset_left(result.len() + 2)?; let type_bounds = bounds.rewrite(context, shape).map(|s| format!(": {}", s))?; result.push_str(&type_bounds); + } else { + let shape = Shape::indented(indent, context.config).offset_left(result.len())?; + result = rewrite_assign_rhs_with( + context, + result.clone() + ":", + bounds, + shape, + &RhsAssignKind::Bounds, + RhsTactics::ForceNextLineWithoutIndent, + )?; } } diff --git a/tests/source/issue-5892.rs b/tests/source/issue-5892.rs new file mode 100644 index 00000000000..2be61afb5fb --- /dev/null +++ b/tests/source/issue-5892.rs @@ -0,0 +1,33 @@ +// rustfmt-style_edition: 2024 + +type AAAAAAAAAAAAA: + BBBBBBBBBBBBBBB< + CCCCCCCCCCCCCCCCC, + DDDDDDDDDDDDDDDDD, + EEEEEEEEEEEEEEEEE, + FFFFFFFFFFFFFFFFF, + GGGGGGGGGGGGGGGGG, + HHHHHHHHHHHHHHHHH, + IIIIIIIIIIIIIIIII, + >; + +type AAAAAAAAAAAAA: + BBBBBBBBBBBBBBB< + CCCCCCCCCCCCCCCCC, + DDDDDDDDDDDDDDDDD, + EEEEEEEEEEEEEEEEE, + FFFFFFFFFFFFFFFFF, + GGGGGGGGGGGGGGGGG, + HHHHHHHHHHHHHHHHH, + IIIIIIIIIIIIIIIII, + > + Eq + + PartialEq; + +// previous error: maximum length exceeded +type SomeType: + BBBBBBBBBBBBBBB + + AAAAAAAAAAAAA; + +// previous error: maximum length exceeded +type SomeType: + BBBBBBBBBBBBBBB; diff --git a/tests/target/issue-5892.rs b/tests/target/issue-5892.rs new file mode 100644 index 00000000000..2be61afb5fb --- /dev/null +++ b/tests/target/issue-5892.rs @@ -0,0 +1,33 @@ +// rustfmt-style_edition: 2024 + +type AAAAAAAAAAAAA: + BBBBBBBBBBBBBBB< + CCCCCCCCCCCCCCCCC, + DDDDDDDDDDDDDDDDD, + EEEEEEEEEEEEEEEEE, + FFFFFFFFFFFFFFFFF, + GGGGGGGGGGGGGGGGG, + HHHHHHHHHHHHHHHHH, + IIIIIIIIIIIIIIIII, + >; + +type AAAAAAAAAAAAA: + BBBBBBBBBBBBBBB< + CCCCCCCCCCCCCCCCC, + DDDDDDDDDDDDDDDDD, + EEEEEEEEEEEEEEEEE, + FFFFFFFFFFFFFFFFF, + GGGGGGGGGGGGGGGGG, + HHHHHHHHHHHHHHHHH, + IIIIIIIIIIIIIIIII, + > + Eq + + PartialEq; + +// previous error: maximum length exceeded +type SomeType: + BBBBBBBBBBBBBBB + + AAAAAAAAAAAAA; + +// previous error: maximum length exceeded +type SomeType: + BBBBBBBBBBBBBBB;