From 8c1092455e6b110a28ff27e76a7e21e48fd0a038 Mon Sep 17 00:00:00 2001 From: Jonas Schievink Date: Mon, 29 Mar 2021 13:17:49 +0200 Subject: Use `find_node_at_range` --- .../ide_assists/src/handlers/extract_type_alias.rs | 28 +++------------------- 1 file changed, 3 insertions(+), 25 deletions(-) (limited to 'crates/ide_assists/src/handlers') diff --git a/crates/ide_assists/src/handlers/extract_type_alias.rs b/crates/ide_assists/src/handlers/extract_type_alias.rs index 171b87918..f75d35462 100644 --- a/crates/ide_assists/src/handlers/extract_type_alias.rs +++ b/crates/ide_assists/src/handlers/extract_type_alias.rs @@ -1,7 +1,4 @@ -use syntax::{ - ast::{self, AstNode}, - SyntaxKind, -}; +use syntax::ast::{self, AstNode}; use crate::{AssistContext, AssistId, AssistKind, Assists}; @@ -27,28 +24,9 @@ pub(crate) fn extract_type_alias(acc: &mut Assists, ctx: &AssistContext) -> Opti return None; } - let node = match ctx.covering_element() { - syntax::NodeOrToken::Node(node) => node, - syntax::NodeOrToken::Token(tok) => tok.parent()?, - }; - let range = node.text_range(); - let mut type_like_node = None; - for node in node.ancestors() { - if node.text_range() != range { - break; - } - - let kind = node.kind(); - if ast::Type::can_cast(kind) || kind == SyntaxKind::TYPE_ARG { - type_like_node = Some(node); - break; - } - } - - let node = type_like_node?; - + let node = ctx.find_node_at_range::()?; let insert = ctx.find_node_at_offset::()?.syntax().text_range().start(); - let target = node.text_range(); + let target = node.syntax().text_range(); acc.add( AssistId("extract_type_alias", AssistKind::RefactorExtract), -- cgit v1.2.3