Unnamed repository; edit this file 'description' to name the repository.
Merge pull request #22705 from Wilfred/fix/extract-variable-bad-range
fix: Crash on extract_variable when selecting unresolved macro call
| -rw-r--r-- | crates/ide-assists/src/handlers/extract_variable.rs | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/crates/ide-assists/src/handlers/extract_variable.rs b/crates/ide-assists/src/handlers/extract_variable.rs index 97ba801bc8..86dbf20fac 100644 --- a/crates/ide-assists/src/handlers/extract_variable.rs +++ b/crates/ide-assists/src/handlers/extract_variable.rs @@ -110,6 +110,9 @@ pub(crate) fn extract_variable(acc: &mut Assists, ctx: &AssistContext<'_, '_>) - .skip_while(|it| !it.text_range().contains_range(range)) .find_map(valid_target_expr(ctx))?; let original_range = ctx.sema.original_range(expr.syntax()); + if !node.text_range().contains_range(original_range.range) { + return None; + } (cover_edit_range(&node, original_range.range), expr) } else { let expr = node @@ -3026,4 +3029,9 @@ fn main() { "Extract into variable", ); } + + #[test] + fn repro_bad_range_unresolved_macro_paren() { + check_assist_not_applicable(extract_variable, "fn f() { m!$0($0 }"); + } } |