Unnamed repository; edit this file 'description' to name the repository.
Diffstat (limited to 'crates/ide_assists/src/handlers/move_guard.rs')
| -rw-r--r-- | crates/ide_assists/src/handlers/move_guard.rs | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/crates/ide_assists/src/handlers/move_guard.rs b/crates/ide_assists/src/handlers/move_guard.rs index 6841f506aa..d7e7c363af 100644 --- a/crates/ide_assists/src/handlers/move_guard.rs +++ b/crates/ide_assists/src/handlers/move_guard.rs @@ -35,6 +35,10 @@ use crate::{AssistContext, AssistId, AssistKind, Assists}; pub(crate) fn move_guard_to_arm_body(acc: &mut Assists, ctx: &AssistContext) -> Option<()> { let match_arm = ctx.find_node_at_offset::<MatchArm>()?; let guard = match_arm.guard()?; + if ctx.offset() > guard.syntax().text_range().end() { + cov_mark::hit!(move_guard_unapplicable_in_arm_body); + return None; + } let space_before_guard = guard.syntax().prev_sibling_or_token(); // FIXME: support `if let` guards too @@ -156,6 +160,21 @@ mod tests { use crate::tests::{check_assist, check_assist_not_applicable, check_assist_target}; #[test] + fn move_guard_to_arm_body_range() { + cov_mark::check!(move_guard_unapplicable_in_arm_body); + check_assist_not_applicable( + move_guard_to_arm_body, + r#" +fn main() { + match 92 { + x if x > 10 => $0false, + _ => true + } +} +"#, + ); + } + #[test] fn move_guard_to_arm_body_target() { check_assist_target( move_guard_to_arm_body, |