diff options
Diffstat (limited to 'crates/ide_assists/src/handlers')
-rw-r--r-- | crates/ide_assists/src/handlers/extract_type_alias.rs | 28 |
1 files changed, 3 insertions, 25 deletions
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 @@ | |||
1 | use syntax::{ | 1 | use syntax::ast::{self, AstNode}; |
2 | ast::{self, AstNode}, | ||
3 | SyntaxKind, | ||
4 | }; | ||
5 | 2 | ||
6 | use crate::{AssistContext, AssistId, AssistKind, Assists}; | 3 | use crate::{AssistContext, AssistId, AssistKind, Assists}; |
7 | 4 | ||
@@ -27,28 +24,9 @@ pub(crate) fn extract_type_alias(acc: &mut Assists, ctx: &AssistContext) -> Opti | |||
27 | return None; | 24 | return None; |
28 | } | 25 | } |
29 | 26 | ||
30 | let node = match ctx.covering_element() { | 27 | let node = ctx.find_node_at_range::<ast::Type>()?; |
31 | syntax::NodeOrToken::Node(node) => node, | ||
32 | syntax::NodeOrToken::Token(tok) => tok.parent()?, | ||
33 | }; | ||
34 | let range = node.text_range(); | ||
35 | let mut type_like_node = None; | ||
36 | for node in node.ancestors() { | ||
37 | if node.text_range() != range { | ||
38 | break; | ||
39 | } | ||
40 | |||
41 | let kind = node.kind(); | ||
42 | if ast::Type::can_cast(kind) || kind == SyntaxKind::TYPE_ARG { | ||
43 | type_like_node = Some(node); | ||
44 | break; | ||
45 | } | ||
46 | } | ||
47 | |||
48 | let node = type_like_node?; | ||
49 | |||
50 | let insert = ctx.find_node_at_offset::<ast::Item>()?.syntax().text_range().start(); | 28 | let insert = ctx.find_node_at_offset::<ast::Item>()?.syntax().text_range().start(); |
51 | let target = node.text_range(); | 29 | let target = node.syntax().text_range(); |
52 | 30 | ||
53 | acc.add( | 31 | acc.add( |
54 | AssistId("extract_type_alias", AssistKind::RefactorExtract), | 32 | AssistId("extract_type_alias", AssistKind::RefactorExtract), |