aboutsummaryrefslogtreecommitdiff
path: root/crates/ra_hir/src/code_model.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/code_model.rs
parent53a932509dbb9dfdaabb27a0d7fc3fe87e44ec55 (diff)
Remove TraitItem and ImplItem in favor of AssocItem
Diffstat (limited to 'crates/ra_hir/src/code_model.rs')
-rw-r--r--crates/ra_hir/src/code_model.rs33
1 files changed, 9 insertions, 24 deletions
diff --git a/crates/ra_hir/src/code_model.rs b/crates/ra_hir/src/code_model.rs
index 892208c1a..706d24c32 100644
--- a/crates/ra_hir/src/code_model.rs
+++ b/crates/ra_hir/src/code_model.rs
@@ -23,7 +23,7 @@ use crate::{
23 }, 23 },
24 nameres::{CrateModuleId, ImportId, ModuleScope, Namespace}, 24 nameres::{CrateModuleId, ImportId, ModuleScope, Namespace},
25 resolve::{Resolver, TypeNs}, 25 resolve::{Resolver, TypeNs},
26 traits::{TraitData, TraitItem}, 26 traits::TraitData,
27 ty::{ 27 ty::{
28 primitive::{FloatBitness, FloatTy, IntBitness, IntTy, Signedness}, 28 primitive::{FloatBitness, FloatTy, IntBitness, IntTy, Signedness},
29 InferenceResult, TraitRef, 29 InferenceResult, TraitRef,
@@ -269,7 +269,7 @@ impl Module {
269 269
270 for impl_block in self.impl_blocks(db) { 270 for impl_block in self.impl_blocks(db) {
271 for item in impl_block.items(db) { 271 for item in impl_block.items(db) {
272 if let crate::ImplItem::Method(f) = item { 272 if let AssocItem::Function(f) = item {
273 f.diagnostics(db, sink); 273 f.diagnostics(db, sink);
274 } 274 }
275 } 275 }
@@ -853,7 +853,7 @@ impl Trait {
853 self.trait_data(db).name().clone() 853 self.trait_data(db).name().clone()
854 } 854 }
855 855
856 pub fn items(self, db: &impl DefDatabase) -> Vec<TraitItem> { 856 pub fn items(self, db: &impl DefDatabase) -> Vec<AssocItem> {
857 self.trait_data(db).items().to_vec() 857 self.trait_data(db).items().to_vec()
858 } 858 }
859 859
@@ -906,7 +906,7 @@ impl Trait {
906 .items() 906 .items()
907 .iter() 907 .iter()
908 .filter_map(|item| match item { 908 .filter_map(|item| match item {
909 TraitItem::TypeAlias(t) => Some(*t), 909 AssocItem::TypeAlias(t) => Some(*t),
910 _ => None, 910 _ => None,
911 }) 911 })
912 .find(|t| &t.name(db) == name) 912 .find(|t| &t.name(db) == name)
@@ -1030,23 +1030,8 @@ pub enum AssocItem {
1030 Const(Const), 1030 Const(Const),
1031 TypeAlias(TypeAlias), 1031 TypeAlias(TypeAlias),
1032} 1032}
1033 1033// FIXME: not every function, ... is actually an assoc item. maybe we should make
1034impl From<TraitItem> for AssocItem { 1034// sure that you can only turn actual assoc items into AssocItems. This would
1035 fn from(t: TraitItem) -> Self { 1035// require not implementing From, and instead having some checked way of
1036 match t { 1036// casting them, and somehow making the constructors private, which would be annoying.
1037 TraitItem::Function(f) => AssocItem::Function(f), 1037impl_froms!(AssocItem: Function, Const, TypeAlias);
1038 TraitItem::Const(c) => AssocItem::Const(c),
1039 TraitItem::TypeAlias(t) => AssocItem::TypeAlias(t),
1040 }
1041 }
1042}
1043
1044impl From<crate::ImplItem> for AssocItem {
1045 fn from(i: crate::ImplItem) -> Self {
1046 match i {
1047 crate::ImplItem::Method(f) => AssocItem::Function(f),
1048 crate::ImplItem::Const(c) => AssocItem::Const(c),
1049 crate::ImplItem::TypeAlias(t) => AssocItem::TypeAlias(t),
1050 }
1051 }
1052}