Unnamed repository; edit this file 'description' to name the repository.
Fix applicable on let-else for convert_to_guarded_return
Example --- ```rust fn foo() -> bool { let$0 Some(x) = Some(2) else { return false }; } ``` **Before this PR**: ```rust fn foo() -> bool { let Some(Some(x)) = Some(2) else { return }; } ``` **After this PR**: Assist not applicable
A4-Tacks 6 months ago
parent b93180b · commit 7509d80
-rw-r--r--crates/ide-assists/src/handlers/convert_to_guarded_return.rs15
1 files changed, 14 insertions, 1 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 82213ae321..7bbe13bedd 100644
--- a/crates/ide-assists/src/handlers/convert_to_guarded_return.rs
+++ b/crates/ide-assists/src/handlers/convert_to_guarded_return.rs
@@ -182,7 +182,7 @@ fn let_stmt_to_guarded_return(
let cursor_in_range =
let_token_range.cover(let_pattern_range).contains_range(ctx.selection_trimmed());
- if !cursor_in_range {
+ if !cursor_in_range || let_stmt.let_else().is_some() {
return None;
}
@@ -912,6 +912,19 @@ fn main() {
}
#[test]
+ fn ignore_let_else_branch() {
+ check_assist_not_applicable(
+ convert_to_guarded_return,
+ r#"
+//- minicore: option
+fn main() {
+ let$0 Some(x) = Some(2) else { return };
+}
+"#,
+ );
+ }
+
+ #[test]
fn ignore_statements_after_if() {
check_assist_not_applicable(
convert_to_guarded_return,