Unnamed repository; edit this file 'description' to name the repository.
Diffstat (limited to 'crates/ide-assists/src/handlers/extract_variable.rs')
| -rw-r--r-- | crates/ide-assists/src/handlers/extract_variable.rs | 15 |
1 files changed, 7 insertions, 8 deletions
diff --git a/crates/ide-assists/src/handlers/extract_variable.rs b/crates/ide-assists/src/handlers/extract_variable.rs index e1b91c9e89..97ba801bc8 100644 --- a/crates/ide-assists/src/handlers/extract_variable.rs +++ b/crates/ide-assists/src/handlers/extract_variable.rs @@ -101,7 +101,7 @@ pub(crate) fn extract_variable(acc: &mut Assists, ctx: &AssistContext<'_, '_>) - let last_descend = ctx.sema.descend_into_macros_single_exact(last.clone()); let range = first_descend.text_range().cover(last_descend.text_range()); - if first_descend.parent_ancestors().last() != last_descend.parent_ancestors().last() { + if first_descend.tree_top() != last_descend.tree_top() { return None; } @@ -198,13 +198,12 @@ pub(crate) fn extract_variable(acc: &mut Assists, ctx: &AssistContext<'_, '_>) - |edit| { let (var_name, expr_replace) = kind.get_name_and_expr(ctx, &analysis); - let to_replace = - if expr_replace.ancestors().last() == to_replace.start().ancestors().last() { - let element = expr_replace.clone().syntax_element(); - element.clone()..=element - } else { - to_replace.clone() - }; + let to_replace = if expr_replace.tree_top() == to_replace.start().tree_top() { + let element = expr_replace.clone().syntax_element(); + element.clone()..=element + } else { + to_replace.clone() + }; let editor = edit.make_editor(&place); let make = editor.make(); |