aboutsummaryrefslogtreecommitdiff
path: root/crates/ra_hir/src/impl_block.rs
diff options
context:
space:
mode:
authorFlorian Diebold <[email protected]>2019-09-16 21:01:13 +0100
committerFlorian Diebold <[email protected]>2019-09-17 18:47:45 +0100
commita040fde3ae5e339199237f24a7461812e74475bf (patch)
tree007e93e160cd6f0c5e62a4ed4ac72e8f6f8bf76b /crates/ra_hir/src/impl_block.rs
parent53a932509dbb9dfdaabb27a0d7fc3fe87e44ec55 (diff)
Remove TraitItem and ImplItem in favor of AssocItem
Diffstat (limited to 'crates/ra_hir/src/impl_block.rs')
-rw-r--r--crates/ra_hir/src/impl_block.rs28
1 files changed, 6 insertions, 22 deletions
diff --git a/crates/ra_hir/src/impl_block.rs b/crates/ra_hir/src/impl_block.rs
index d26a024ed..c463d351c 100644
--- a/crates/ra_hir/src/impl_block.rs
+++ b/crates/ra_hir/src/impl_block.rs
@@ -15,7 +15,7 @@ use crate::{
15 resolve::Resolver, 15 resolve::Resolver,
16 ty::Ty, 16 ty::Ty,
17 type_ref::TypeRef, 17 type_ref::TypeRef,
18 Const, Function, HasSource, HirFileId, Source, TraitRef, TypeAlias, 18 AssocItem, Const, Function, HasSource, HirFileId, Source, TraitRef, TypeAlias,
19}; 19};
20 20
21#[derive(Debug, Default, PartialEq, Eq)] 21#[derive(Debug, Default, PartialEq, Eq)]
@@ -56,7 +56,7 @@ impl HasSource for ImplBlock {
56impl ImplBlock { 56impl ImplBlock {
57 pub(crate) fn containing( 57 pub(crate) fn containing(
58 module_impl_blocks: Arc<ModuleImplBlocks>, 58 module_impl_blocks: Arc<ModuleImplBlocks>,
59 item: ImplItem, 59 item: AssocItem,
60 ) -> Option<ImplBlock> { 60 ) -> Option<ImplBlock> {
61 let impl_id = *module_impl_blocks.impls_by_def.get(&item)?; 61 let impl_id = *module_impl_blocks.impls_by_def.get(&item)?;
62 Some(ImplBlock { module: module_impl_blocks.module, impl_id }) 62 Some(ImplBlock { module: module_impl_blocks.module, impl_id })
@@ -91,7 +91,7 @@ impl ImplBlock {
91 TraitRef::from_hir(db, &self.resolver(db), &self.target_trait(db)?, Some(target_ty)) 91 TraitRef::from_hir(db, &self.resolver(db), &self.target_trait(db)?, Some(target_ty))
92 } 92 }
93 93
94 pub fn items(&self, db: &impl DefDatabase) -> Vec<ImplItem> { 94 pub fn items(&self, db: &impl DefDatabase) -> Vec<AssocItem> {
95 db.impls_in_module(self.module).impls[self.impl_id].items().to_vec() 95 db.impls_in_module(self.module).impls[self.impl_id].items().to_vec()
96 } 96 }
97 97
@@ -113,7 +113,7 @@ impl ImplBlock {
113pub struct ImplData { 113pub struct ImplData {
114 target_trait: Option<TypeRef>, 114 target_trait: Option<TypeRef>,
115 target_type: TypeRef, 115 target_type: TypeRef,
116 items: Vec<ImplItem>, 116 items: Vec<AssocItem>,
117 negative: bool, 117 negative: bool,
118} 118}
119 119
@@ -151,27 +151,11 @@ impl ImplData {
151 &self.target_type 151 &self.target_type
152 } 152 }
153 153
154 pub fn items(&self) -> &[ImplItem] { 154 pub fn items(&self) -> &[AssocItem] {
155 &self.items 155 &self.items
156 } 156 }
157} 157}
158 158
159#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
160//FIXME: rename to ImplDef?
161pub enum ImplItem {
162 Method(Function),
163 Const(Const),
164 TypeAlias(TypeAlias),
165 // Existential
166}
167impl_froms!(ImplItem: Const, TypeAlias);
168
169impl From<Function> for ImplItem {
170 fn from(func: Function) -> ImplItem {
171 ImplItem::Method(func)
172 }
173}
174
175#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)] 159#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
176pub struct ImplId(pub RawId); 160pub struct ImplId(pub RawId);
177impl_arena_id!(ImplId); 161impl_arena_id!(ImplId);
@@ -185,7 +169,7 @@ impl_arena_id!(ImplId);
185pub struct ModuleImplBlocks { 169pub struct ModuleImplBlocks {
186 pub(crate) module: Module, 170 pub(crate) module: Module,
187 pub(crate) impls: Arena<ImplId, ImplData>, 171 pub(crate) impls: Arena<ImplId, ImplData>,
188 impls_by_def: FxHashMap<ImplItem, ImplId>, 172 impls_by_def: FxHashMap<AssocItem, ImplId>,
189} 173}
190 174
191impl ModuleImplBlocks { 175impl ModuleImplBlocks {