Skip to content

Update comment search in ControlFlow::rewrite_pat_expr for for loops #5016

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 1 commit into from
Oct 14, 2021
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion src/expr.rs
Original file line number Diff line number Diff line change
Expand Up @@ -822,7 +822,7 @@ impl<'a> ControlFlow<'a> {
let pat_string = pat.rewrite(context, pat_shape)?;
let comments_lo = context
.snippet_provider
.span_after(self.span, self.connector.trim());
.span_after(self.span.with_lo(pat.span.hi()), self.connector.trim());
let comments_span = mk_sp(comments_lo, expr.span.lo());
return rewrite_assign_rhs_with_comments(
context,
Expand Down
4 changes: 4 additions & 0 deletions tests/target/issue-5009/1_minimum_example.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
fn main() {
// the "in" inside the pattern produced invalid syntax
for variable_in_here /* ... */ in 0..1 {}
}
3 changes: 3 additions & 0 deletions tests/target/issue-5009/2_many_in_connectors_in_pattern.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
fn main() {
for in_in_in_in_in_in_in_in /* ... */ in 0..1 {}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
fn main() {
for variable_in_x /* ... */ in 0..1 {
for variable_in_y /* ... */ in 0..1 {}
}
}
13 changes: 13 additions & 0 deletions tests/target/issue-5009/4_nested_for_loop_with_if_elseif_else.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
fn main() {
for variable_in_x /* ... */ in 0..1 {
for variable_in_y /* ... */ in 0..1 {
if false {

} else if false {

} else {

}
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
fn main() {
let in_ = false;

for variable_in_x /* ... */ in 0..1 {
for variable_in_y /* ... */ in 0..1 {
if in_ {

} else if in_ {

} else {

}
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
fn main() {
for variable_in_a /* ... */ in 0..1 {
for variable_in_b /* ... */ in 0..1 {
for variable_in_c /* ... */ in 0..1 {
for variable_in_d /* ... */ in 0..1 {
for variable_in_e /* ... */ in 0..1 {
for variable_in_f /* ... */ in 0..1 {
for variable_in_g /* ... */ in 0..1 {
for variable_in_h /* ... */ in 0..1 {
for variable_in_i /* ... */ in 0..1 {
for variable_in_j /* ... */ in 0..1 {
for variable_in_k /* ... */ in 0..1 {
for variable_in_l /* ... */ in 0..1 {
for variable_in_m /* ... */ in 0..1 {
for variable_in_n /* ... */ in 0..1 {
for variable_in_o /* ... */ in 0..1 {
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}