diff options
Diffstat (limited to 'crates/ra_assists/src/add_missing_impl_members.rs')
-rw-r--r-- | crates/ra_assists/src/add_missing_impl_members.rs | 24 |
1 files changed, 12 insertions, 12 deletions
diff --git a/crates/ra_assists/src/add_missing_impl_members.rs b/crates/ra_assists/src/add_missing_impl_members.rs index 995e44d5e..31c7d4e80 100644 --- a/crates/ra_assists/src/add_missing_impl_members.rs +++ b/crates/ra_assists/src/add_missing_impl_members.rs | |||
@@ -5,7 +5,7 @@ use crate::{ | |||
5 | 5 | ||
6 | use hir::{db::HirDatabase, HasSource}; | 6 | use hir::{db::HirDatabase, HasSource}; |
7 | use ra_db::FilePosition; | 7 | use ra_db::FilePosition; |
8 | use ra_syntax::ast::{self, AstNode, ImplItemKind, NameOwner}; | 8 | use ra_syntax::ast::{self, AstNode, NameOwner}; |
9 | use ra_syntax::SmolStr; | 9 | use ra_syntax::SmolStr; |
10 | 10 | ||
11 | #[derive(PartialEq)] | 11 | #[derive(PartialEq)] |
@@ -49,11 +49,11 @@ fn add_missing_impl_members_inner( | |||
49 | resolve_target_trait_def(ctx.db, &analyzer, &impl_node)? | 49 | resolve_target_trait_def(ctx.db, &analyzer, &impl_node)? |
50 | }; | 50 | }; |
51 | 51 | ||
52 | let def_name = |kind| -> Option<SmolStr> { | 52 | let def_name = |item: &ast::ImplItem| -> Option<SmolStr> { |
53 | match kind { | 53 | match item { |
54 | ast::ImplItemKind::FnDef(def) => def.name(), | 54 | ast::ImplItem::FnDef(def) => def.name(), |
55 | ast::ImplItemKind::TypeAliasDef(def) => def.name(), | 55 | ast::ImplItem::TypeAliasDef(def) => def.name(), |
56 | ast::ImplItemKind::ConstDef(def) => def.name(), | 56 | ast::ImplItem::ConstDef(def) => def.name(), |
57 | } | 57 | } |
58 | .map(|it| it.text().clone()) | 58 | .map(|it| it.text().clone()) |
59 | }; | 59 | }; |
@@ -62,15 +62,15 @@ fn add_missing_impl_members_inner( | |||
62 | let impl_items = impl_item_list.impl_items().collect::<Vec<_>>(); | 62 | let impl_items = impl_item_list.impl_items().collect::<Vec<_>>(); |
63 | 63 | ||
64 | let missing_items: Vec<_> = trait_items | 64 | let missing_items: Vec<_> = trait_items |
65 | .filter(|t| def_name(t.kind()).is_some()) | 65 | .filter(|t| def_name(t).is_some()) |
66 | .filter(|t| match t.kind() { | 66 | .filter(|t| match t { |
67 | ImplItemKind::FnDef(def) => match mode { | 67 | ast::ImplItem::FnDef(def) => match mode { |
68 | AddMissingImplMembersMode::DefaultMethodsOnly => def.body().is_some(), | 68 | AddMissingImplMembersMode::DefaultMethodsOnly => def.body().is_some(), |
69 | AddMissingImplMembersMode::NoDefaultMethods => def.body().is_none(), | 69 | AddMissingImplMembersMode::NoDefaultMethods => def.body().is_none(), |
70 | }, | 70 | }, |
71 | _ => mode == AddMissingImplMembersMode::NoDefaultMethods, | 71 | _ => mode == AddMissingImplMembersMode::NoDefaultMethods, |
72 | }) | 72 | }) |
73 | .filter(|t| impl_items.iter().all(|i| def_name(i.kind()) != def_name(t.kind()))) | 73 | .filter(|t| impl_items.iter().all(|i| def_name(i) != def_name(t))) |
74 | .collect(); | 74 | .collect(); |
75 | if missing_items.is_empty() { | 75 | if missing_items.is_empty() { |
76 | return None; | 76 | return None; |
@@ -78,8 +78,8 @@ fn add_missing_impl_members_inner( | |||
78 | 78 | ||
79 | ctx.add_action(AssistId(assist_id), label, |edit| { | 79 | ctx.add_action(AssistId(assist_id), label, |edit| { |
80 | let n_existing_items = impl_item_list.impl_items().count(); | 80 | let n_existing_items = impl_item_list.impl_items().count(); |
81 | let items = missing_items.into_iter().map(|it| match it.kind() { | 81 | let items = missing_items.into_iter().map(|it| match it { |
82 | ImplItemKind::FnDef(def) => strip_docstring(add_body(def).into()), | 82 | ast::ImplItem::FnDef(def) => strip_docstring(add_body(def).into()), |
83 | _ => strip_docstring(it), | 83 | _ => strip_docstring(it), |
84 | }); | 84 | }); |
85 | let mut ast_editor = AstEditor::new(impl_item_list); | 85 | let mut ast_editor = AstEditor::new(impl_item_list); |