diff options
| author | bors[bot] <26634292+bors[bot]@users.noreply.github.com> | 2021-10-19 12:16:30 +0000 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2021-10-19 12:16:30 +0000 |
| commit | e77fc481adb98d95643e00f5fa5f02cbef698014 (patch) | |
| tree | 4c8a04cc7b5d65e844f4f7c68c8fb78488fc4aad | |
| parent | 0e4c3b2c2be83251ab0f1ffba74780e05e77c2ff (diff) | |
| parent | 7e1d6e526512407b259b9bdd2622c4cc4f46972d (diff) | |
| download | rust-e77fc481adb98d95643e00f5fa5f02cbef698014.tar.gz rust-e77fc481adb98d95643e00f5fa5f02cbef698014.zip | |
Merge #10587
10587: fix: Fix `add_missing_match_arm` panicking on failed upmapping r=Veykril a=Veykril Closes https://github.com/rust-analyzer/rust-analyzer/issues/10580#issuecomment-946170475 Co-authored-by: Lukas Wirth <lukastw97@gmail.com>
| -rw-r--r-- | crates/ide_assists/src/handlers/add_missing_match_arms.rs | 19 |
1 files changed, 7 insertions, 12 deletions
diff --git a/crates/ide_assists/src/handlers/add_missing_match_arms.rs b/crates/ide_assists/src/handlers/add_missing_match_arms.rs index 4573a609893..463fb1c914a 100644 --- a/crates/ide_assists/src/handlers/add_missing_match_arms.rs +++ b/crates/ide_assists/src/handlers/add_missing_match_arms.rs @@ -6,7 +6,6 @@ use ide_db::helpers::{mod_path_to_ast, FamousDefs}; use ide_db::RootDatabase; use itertools::Itertools; use syntax::ast::{self, make, AstNode, HasName, MatchArm, MatchArmList, MatchExpr, Pat}; -use syntax::TextRange; use crate::{ utils::{self, render_snippet, Cursor}, @@ -40,21 +39,15 @@ use crate::{ pub(crate) fn add_missing_match_arms(acc: &mut Assists, ctx: &AssistContext) -> Option<()> { let match_expr = ctx.find_node_at_offset_with_descend::<ast::MatchExpr>()?; let match_arm_list = match_expr.match_arm_list()?; - let target_range: TextRange; + let target_range = ctx.sema.original_range(match_expr.syntax()).range; if let None = cursor_at_trivial_match_arm_list(&ctx, &match_expr, &match_arm_list) { - target_range = TextRange::new( - ctx.sema.original_range(match_expr.syntax()).range.start(), - ctx.sema.original_range(match_arm_list.syntax()).range.start(), - ); - - let cursor_in_range = target_range.contains_range(ctx.selection_trimmed()); - if !cursor_in_range { + let arm_list_range = ctx.sema.original_range(match_arm_list.syntax()).range; + let cursor_in_range = arm_list_range.contains_range(ctx.selection_trimmed()); + if cursor_in_range { cov_mark::hit!(not_applicable_outside_of_range_right); return None; } - } else { - target_range = ctx.sema.original_range(match_expr.syntax()).range; } let expr = match_expr.expr()?; @@ -953,7 +946,9 @@ fn main() { } } "#, - "match E::X ", + "match E::X { + E::X => {} + }", ); } |
