Skip to content

Commit 41bcf3d

Browse files
committed
Include trailing comma in single param vertical fn
When formatting a function with a single parameter with `fn_params_layout` set to `Vertical`, the previous tactic would remove any trailing commas before spilling to multiple lines for other reasons, such as long function names or return types. Instead, use the same tactic as `Tall` does, so that the trailing comma is kept if the end result spans multiple lines. Issue #6889 `fn_params_layout = "Vertical"` removes single argument's trailing comma
1 parent ef22670 commit 41bcf3d

3 files changed

Lines changed: 53 additions & 1 deletion

File tree

src/config/options.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -100,7 +100,7 @@ impl Density {
100100
match self {
101101
Density::Compressed => ListTactic::Mixed,
102102
Density::Tall => ListTactic::HorizontalVertical,
103-
Density::Vertical if len == 1 => ListTactic::Horizontal,
103+
Density::Vertical if len == 1 => ListTactic::HorizontalVertical,
104104
Density::Vertical => ListTactic::Vertical,
105105
}
106106
}

tests/source/configs/fn_params_layout/vertical.rs

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,10 @@
22
// Function arguments density
33

44
trait Lorem {
5+
fn lorem(ipsum: Ipsum);
6+
7+
fn lorem(ipsum: Ipsum) -> Dolor;
8+
59
fn lorem(ipsum: Ipsum, dolor: Dolor, sit: Sit, amet: Amet);
610

711
fn lorem(ipsum: Ipsum, dolor: Dolor, sit: Sit, amet: Amet) {
@@ -13,4 +17,22 @@ trait Lorem {
1317
fn lorem(ipsum: Ipsum, dolor: Dolor, sit: Sit, amet: Amet, consectetur: onsectetur, adipiscing: Adipiscing, elit: Elit) {
1418
// body
1519
}
20+
21+
fn long_param_name(lorem_ipsum_dolor_sit_amet_consectetur_adipiscing_elit_sed_do_eiusmod: Tempor);
22+
23+
fn long_param_type(lorem: IpsumDolorSitAmetConsecteturAdipiscingElitSedDoEiusmodTemporIncididuntUtLabore,
24+
);
25+
26+
fn long_return_type(lorem: Lorem)
27+
-> IpsumDolorSitAmetConsecteturAdipiscingElitSedDoEiusmodTemporIncididuntUtLabore;
28+
29+
fn lorem_ipsum_dolor_sit_amet_consectetur_adipiscing_elit_sed_do_eiusmod_tempor_incididunt
30+
(lorem: Lorem);
31+
32+
fn lorem<T: IpsumDolorSitAmetConsecteturAdipiscingElitSedDoEiusmodTemporIncididuntUtLaboreEt>(t: T);
33+
34+
fn lorem<T: IpsumDolorSitAmetConsecteturAdipiscingElitSedDoEiusmodTemporIncididuntUtLaboreEtDolore>
35+
(
36+
t: T,
37+
);
1638
}

tests/target/configs/fn_params_layout/vertical.rs

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,10 @@
22
// Function arguments density
33

44
trait Lorem {
5+
fn lorem(ipsum: Ipsum);
6+
7+
fn lorem(ipsum: Ipsum) -> Dolor;
8+
59
fn lorem(
610
ipsum: Ipsum,
711
dolor: Dolor,
@@ -39,4 +43,30 @@ trait Lorem {
3943
) {
4044
// body
4145
}
46+
47+
fn long_param_name(
48+
lorem_ipsum_dolor_sit_amet_consectetur_adipiscing_elit_sed_do_eiusmod: Tempor,
49+
);
50+
51+
fn long_param_type(
52+
lorem: IpsumDolorSitAmetConsecteturAdipiscingElitSedDoEiusmodTemporIncididuntUtLabore,
53+
);
54+
55+
fn long_return_type(
56+
lorem: Lorem,
57+
) -> IpsumDolorSitAmetConsecteturAdipiscingElitSedDoEiusmodTemporIncididuntUtLabore;
58+
59+
fn lorem_ipsum_dolor_sit_amet_consectetur_adipiscing_elit_sed_do_eiusmod_tempor_incididunt(
60+
lorem: Lorem,
61+
);
62+
63+
fn lorem<T: IpsumDolorSitAmetConsecteturAdipiscingElitSedDoEiusmodTemporIncididuntUtLaboreEt>(
64+
t: T,
65+
);
66+
67+
fn lorem<
68+
T: IpsumDolorSitAmetConsecteturAdipiscingElitSedDoEiusmodTemporIncididuntUtLaboreEtDolore,
69+
>(
70+
t: T,
71+
);
4272
}

0 commit comments

Comments
 (0)