Skip to content
This repository was archived by the owner on May 28, 2025. It is now read-only.

Commit 661bea7

Browse files
authored
Merge pull request rust-lang#3013 from YaLTeR/fix-issue-2985
Fix wrong shape for last chain items for indent_style = "Visual"
2 parents d165533 + 4b4fb55 commit 661bea7

File tree

3 files changed

+76
-0
lines changed

3 files changed

+76
-0
lines changed

src/chains.rs

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -614,6 +614,12 @@ impl<'a> ChainFormatterShared<'a> {
614614
}
615615
}
616616

617+
let last_shape = if context.use_block_indent() {
618+
last_shape
619+
} else {
620+
child_shape.sub_width(shape.rhs_overhead(context.config) + last.tries)?
621+
};
622+
617623
last_subexpr_str = last_subexpr_str.or_else(|| last.rewrite(context, last_shape));
618624
self.rewrites.push(last_subexpr_str?);
619625
Some(())

tests/source/issue-2985.rs

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
// rustfmt-indent_style: Visual
2+
fn foo() {
3+
{
4+
{
5+
let extra_encoder_settings = extra_encoder_settings.iter()
6+
.filter_map(|&(name, value)| {
7+
value.split()
8+
.next()
9+
.something()
10+
.something2()
11+
.something3()
12+
.something4()
13+
});
14+
let extra_encoder_settings = extra_encoder_settings.iter()
15+
.filter_map(|&(name, value)| {
16+
value.split()
17+
.next()
18+
.something()
19+
.something2()
20+
.something3()
21+
.something4()
22+
})
23+
.something();
24+
if let Some(subpod) = pod.subpods.iter().find(|s| {
25+
!s.plaintext
26+
.as_ref()
27+
.map(String::as_ref)
28+
.unwrap_or("")
29+
.is_empty()
30+
}) {
31+
do_something();
32+
}
33+
}
34+
}
35+
}

tests/target/issue-2985.rs

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
// rustfmt-indent_style: Visual
2+
fn foo() {
3+
{
4+
{
5+
let extra_encoder_settings = extra_encoder_settings.iter()
6+
.filter_map(|&(name, value)| {
7+
value.split()
8+
.next()
9+
.something()
10+
.something2()
11+
.something3()
12+
.something4()
13+
});
14+
let extra_encoder_settings = extra_encoder_settings.iter()
15+
.filter_map(|&(name, value)| {
16+
value.split()
17+
.next()
18+
.something()
19+
.something2()
20+
.something3()
21+
.something4()
22+
})
23+
.something();
24+
if let Some(subpod) = pod.subpods.iter().find(|s| {
25+
!s.plaintext
26+
.as_ref()
27+
.map(String::as_ref)
28+
.unwrap_or("")
29+
.is_empty()
30+
}) {
31+
do_something();
32+
}
33+
}
34+
}
35+
}

0 commit comments

Comments
 (0)