From 1597162eeaedb8b389acbfaf7639fe4b1df34f23 Mon Sep 17 00:00:00 2001 From: A4-Tacks Date: Tue, 14 Oct 2025 14:47:08 +0800 Subject: [PATCH] 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 --- .../src/handlers/convert_to_guarded_return.rs | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/src/tools/rust-analyzer/crates/ide-assists/src/handlers/convert_to_guarded_return.rs b/src/tools/rust-analyzer/crates/ide-assists/src/handlers/convert_to_guarded_return.rs index 82213ae3217e..7bbe13bedd89 100644 --- a/src/tools/rust-analyzer/crates/ide-assists/src/handlers/convert_to_guarded_return.rs +++ b/src/tools/rust-analyzer/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; } @@ -911,6 +911,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(