Skip to content

Commit d4926c1

Browse files
committed
Auto merge of rust-lang#16405 - dfireBird:guarded-return-for-loop, r=lnicola
fix: Include `for` construct in convert to guarded return conditions
2 parents 0c76421 + 721e790 commit d4926c1

File tree

1 file changed

+28
-2
lines changed

1 file changed

+28
-2
lines changed

crates/ide-assists/src/handlers/convert_to_guarded_return.rs

+28-2
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ use syntax::{
88
make,
99
},
1010
ted, AstNode,
11-
SyntaxKind::{FN, LOOP_EXPR, WHILE_EXPR, WHITESPACE},
11+
SyntaxKind::{FN, FOR_EXPR, LOOP_EXPR, WHILE_EXPR, WHITESPACE},
1212
T,
1313
};
1414

@@ -82,7 +82,7 @@ pub(crate) fn convert_to_guarded_return(acc: &mut Assists, ctx: &AssistContext<'
8282
let parent_container = parent_block.syntax().parent()?;
8383

8484
let early_expression: ast::Expr = match parent_container.kind() {
85-
WHILE_EXPR | LOOP_EXPR => make::expr_continue(None),
85+
WHILE_EXPR | LOOP_EXPR | FOR_EXPR => make::expr_continue(None),
8686
FN => make::expr_return(None),
8787
_ => return None,
8888
};
@@ -424,6 +424,32 @@ fn main() {
424424
);
425425
}
426426

427+
#[test]
428+
fn convert_let_inside_for() {
429+
check_assist(
430+
convert_to_guarded_return,
431+
r#"
432+
fn main() {
433+
for n in ns {
434+
if$0 let Some(n) = n {
435+
foo(n);
436+
bar();
437+
}
438+
}
439+
}
440+
"#,
441+
r#"
442+
fn main() {
443+
for n in ns {
444+
let Some(n) = n else { continue };
445+
foo(n);
446+
bar();
447+
}
448+
}
449+
"#,
450+
);
451+
}
452+
427453
#[test]
428454
fn convert_arbitrary_if_let_patterns() {
429455
check_assist(

0 commit comments

Comments
 (0)