Skip to content

Commit 2152473

Browse files
committed
Issue-5892: Type alias generic rewrite follows the same rule as trait
rewrite
1 parent 4489061 commit 2152473

File tree

3 files changed

+80
-2
lines changed

3 files changed

+80
-2
lines changed

src/items.rs

+14-2
Original file line numberDiff line numberDiff line change
@@ -1766,12 +1766,24 @@ fn rewrite_ty<R: Rewrite>(
17661766
result.push_str(&generics_str);
17671767
}
17681768

1769-
if let Some(bounds) = generic_bounds_opt {
1770-
if !bounds.is_empty() {
1769+
if let Some(bounds) = generic_bounds_opt
1770+
&& !bounds.is_empty()
1771+
{
1772+
if context.config.style_edition() <= StyleEdition::Edition2021 {
17711773
// 2 = `: `
17721774
let shape = Shape::indented(indent, context.config).offset_left(result.len() + 2)?;
17731775
let type_bounds = bounds.rewrite(context, shape).map(|s| format!(": {}", s))?;
17741776
result.push_str(&type_bounds);
1777+
} else {
1778+
let shape = Shape::indented(indent, context.config).offset_left(result.len())?;
1779+
result = rewrite_assign_rhs_with(
1780+
context,
1781+
result.clone() + ":",
1782+
bounds,
1783+
shape,
1784+
&RhsAssignKind::Bounds,
1785+
RhsTactics::ForceNextLineWithoutIndent,
1786+
)?;
17751787
}
17761788
}
17771789

tests/source/issue-5892.rs

+33
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
// rustfmt-style_edition: 2024
2+
3+
type AAAAAAAAAAAAA:
4+
BBBBBBBBBBBBBBB<
5+
CCCCCCCCCCCCCCCCC,
6+
DDDDDDDDDDDDDDDDD,
7+
EEEEEEEEEEEEEEEEE,
8+
FFFFFFFFFFFFFFFFF,
9+
GGGGGGGGGGGGGGGGG,
10+
HHHHHHHHHHHHHHHHH,
11+
IIIIIIIIIIIIIIIII,
12+
>;
13+
14+
type AAAAAAAAAAAAA:
15+
BBBBBBBBBBBBBBB<
16+
CCCCCCCCCCCCCCCCC,
17+
DDDDDDDDDDDDDDDDD,
18+
EEEEEEEEEEEEEEEEE,
19+
FFFFFFFFFFFFFFFFF,
20+
GGGGGGGGGGGGGGGGG,
21+
HHHHHHHHHHHHHHHHH,
22+
IIIIIIIIIIIIIIIII,
23+
> + Eq
24+
+ PartialEq;
25+
26+
// previous error: maximum length exceeded
27+
type SomeType:
28+
BBBBBBBBBBBBBBB<CCCCCCCCCCCCCCCCC, DDDDDDDDDDDDDDDDD, EEEEEEEEEEEEEEEEE, FFFFFFFFFFFFFFFFF>
29+
+ AAAAAAAAAAAAA;
30+
31+
// previous error: maximum length exceeded
32+
type SomeType:
33+
BBBBBBBBBBBBBBB<CCCCCCCCCCCCCCCCC, DDDDDDDDDDDDDDDDD, EEEEEEEEEEEEEEEEE, FFFFFFFFFFFFFFFFF>;

tests/target/issue-5892.rs

+33
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
// rustfmt-style_edition: 2024
2+
3+
type AAAAAAAAAAAAA:
4+
BBBBBBBBBBBBBBB<
5+
CCCCCCCCCCCCCCCCC,
6+
DDDDDDDDDDDDDDDDD,
7+
EEEEEEEEEEEEEEEEE,
8+
FFFFFFFFFFFFFFFFF,
9+
GGGGGGGGGGGGGGGGG,
10+
HHHHHHHHHHHHHHHHH,
11+
IIIIIIIIIIIIIIIII,
12+
>;
13+
14+
type AAAAAAAAAAAAA:
15+
BBBBBBBBBBBBBBB<
16+
CCCCCCCCCCCCCCCCC,
17+
DDDDDDDDDDDDDDDDD,
18+
EEEEEEEEEEEEEEEEE,
19+
FFFFFFFFFFFFFFFFF,
20+
GGGGGGGGGGGGGGGGG,
21+
HHHHHHHHHHHHHHHHH,
22+
IIIIIIIIIIIIIIIII,
23+
> + Eq
24+
+ PartialEq;
25+
26+
// previous error: maximum length exceeded
27+
type SomeType:
28+
BBBBBBBBBBBBBBB<CCCCCCCCCCCCCCCCC, DDDDDDDDDDDDDDDDD, EEEEEEEEEEEEEEEEE, FFFFFFFFFFFFFFFFF>
29+
+ AAAAAAAAAAAAA;
30+
31+
// previous error: maximum length exceeded
32+
type SomeType:
33+
BBBBBBBBBBBBBBB<CCCCCCCCCCCCCCCCC, DDDDDDDDDDDDDDDDD, EEEEEEEEEEEEEEEEE, FFFFFFFFFFFFFFFFF>;

0 commit comments

Comments
 (0)