Unnamed repository; edit this file 'description' to name the repository.
include `for` in convert to guarded return assist
dfireBird 2024-01-20
parent 9d8889c · commit 721e790
-rw-r--r--crates/ide-assists/src/handlers/convert_to_guarded_return.rs30
1 files changed, 28 insertions, 2 deletions
diff --git a/crates/ide-assists/src/handlers/convert_to_guarded_return.rs b/crates/ide-assists/src/handlers/convert_to_guarded_return.rs
index 73ba3f5c4c..b18f87b4f6 100644
--- a/crates/ide-assists/src/handlers/convert_to_guarded_return.rs
+++ b/crates/ide-assists/src/handlers/convert_to_guarded_return.rs
@@ -8,7 +8,7 @@ use syntax::{
make,
},
ted, AstNode,
- SyntaxKind::{FN, LOOP_EXPR, WHILE_EXPR, WHITESPACE},
+ SyntaxKind::{FN, FOR_EXPR, LOOP_EXPR, WHILE_EXPR, WHITESPACE},
T,
};
@@ -82,7 +82,7 @@ pub(crate) fn convert_to_guarded_return(acc: &mut Assists, ctx: &AssistContext<'
let parent_container = parent_block.syntax().parent()?;
let early_expression: ast::Expr = match parent_container.kind() {
- WHILE_EXPR | LOOP_EXPR => make::expr_continue(None),
+ WHILE_EXPR | LOOP_EXPR | FOR_EXPR => make::expr_continue(None),
FN => make::expr_return(None),
_ => return None,
};
@@ -427,6 +427,32 @@ fn main() {
}
#[test]
+ fn convert_let_inside_for() {
+ check_assist(
+ convert_to_guarded_return,
+ r#"
+fn main() {
+ for n in ns {
+ if$0 let Some(n) = n {
+ foo(n);
+ bar();
+ }
+ }
+}
+"#,
+ r#"
+fn main() {
+ for n in ns {
+ let Some(n) = n else { continue };
+ foo(n);
+ bar();
+ }
+}
+"#,
+ );
+ }
+
+ #[test]
fn convert_arbitrary_if_let_patterns() {
check_assist(
convert_to_guarded_return,