aboutsummaryrefslogtreecommitdiff
path: root/crates/ra_assists/src/add_missing_impl_members.rs
diff options
context:
space:
mode:
Diffstat (limited to 'crates/ra_assists/src/add_missing_impl_members.rs')
-rw-r--r--crates/ra_assists/src/add_missing_impl_members.rs24
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
6use hir::{db::HirDatabase, HasSource}; 6use hir::{db::HirDatabase, HasSource};
7use ra_db::FilePosition; 7use ra_db::FilePosition;
8use ra_syntax::ast::{self, AstNode, ImplItemKind, NameOwner}; 8use ra_syntax::ast::{self, AstNode, NameOwner};
9use ra_syntax::SmolStr; 9use 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);