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
Chayim Refael Friedman 10 days ago
parent 693e516 · parent a507205 · commit 1c662c6
-rw-r--r--crates/ide-assists/src/handlers/extract_variable.rs8
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 }");
+ }
}