Skip to content

Commit b6f5b62

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

File tree

3 files changed

+83
-4
lines changed

3 files changed

+83
-4
lines changed

Diff for: src/items.rs

+17-4
Original file line numberDiff line numberDiff line change
@@ -1768,10 +1768,23 @@ fn rewrite_ty<R: Rewrite>(
17681768

17691769
if let Some(bounds) = generic_bounds_opt {
17701770
if !bounds.is_empty() {
1771-
// 2 = `: `
1772-
let shape = Shape::indented(indent, context.config).offset_left(result.len() + 2)?;
1773-
let type_bounds = bounds.rewrite(context, shape).map(|s| format!(": {}", s))?;
1774-
result.push_str(&type_bounds);
1771+
if context.config.style_edition() <= StyleEdition::Edition2021 {
1772+
// 2 = `: `
1773+
let shape =
1774+
Shape::indented(indent, context.config).offset_left(result.len() + 2)?;
1775+
let type_bounds = bounds.rewrite(context, shape).map(|s| format!(": {}", s))?;
1776+
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+
)?;
1787+
}
17751788
}
17761789
}
17771790

Diff for: 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>;

Diff for: 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)