diff options
Diffstat (limited to 'crates/ra_hir/src/traits.rs')
-rw-r--r-- | crates/ra_hir/src/traits.rs | 23 |
1 files changed, 5 insertions, 18 deletions
diff --git a/crates/ra_hir/src/traits.rs b/crates/ra_hir/src/traits.rs index 4c2f7980d..e39511518 100644 --- a/crates/ra_hir/src/traits.rs +++ b/crates/ra_hir/src/traits.rs | |||
@@ -9,13 +9,13 @@ use crate::{ | |||
9 | db::{AstDatabase, DefDatabase}, | 9 | db::{AstDatabase, DefDatabase}, |
10 | ids::LocationCtx, | 10 | ids::LocationCtx, |
11 | name::AsName, | 11 | name::AsName, |
12 | Const, Function, HasSource, Module, Name, Trait, TypeAlias, | 12 | AssocItem, Const, Function, HasSource, Module, Name, Trait, TypeAlias, |
13 | }; | 13 | }; |
14 | 14 | ||
15 | #[derive(Debug, Clone, PartialEq, Eq)] | 15 | #[derive(Debug, Clone, PartialEq, Eq)] |
16 | pub struct TraitData { | 16 | pub struct TraitData { |
17 | name: Option<Name>, | 17 | name: Option<Name>, |
18 | items: Vec<TraitItem>, | 18 | items: Vec<AssocItem>, |
19 | auto: bool, | 19 | auto: bool, |
20 | } | 20 | } |
21 | 21 | ||
@@ -48,7 +48,7 @@ impl TraitData { | |||
48 | &self.name | 48 | &self.name |
49 | } | 49 | } |
50 | 50 | ||
51 | pub(crate) fn items(&self) -> &[TraitItem] { | 51 | pub(crate) fn items(&self) -> &[AssocItem] { |
52 | &self.items | 52 | &self.items |
53 | } | 53 | } |
54 | 54 | ||
@@ -57,22 +57,9 @@ impl TraitData { | |||
57 | } | 57 | } |
58 | } | 58 | } |
59 | 59 | ||
60 | #[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)] | ||
61 | pub enum TraitItem { | ||
62 | Function(Function), | ||
63 | Const(Const), | ||
64 | TypeAlias(TypeAlias), | ||
65 | // Existential | ||
66 | } | ||
67 | // FIXME: not every function, ... is actually a trait item. maybe we should make | ||
68 | // sure that you can only turn actual trait items into TraitItems. This would | ||
69 | // require not implementing From, and instead having some checked way of | ||
70 | // casting them. | ||
71 | impl_froms!(TraitItem: Function, Const, TypeAlias); | ||
72 | |||
73 | #[derive(Debug, Clone, PartialEq, Eq)] | 60 | #[derive(Debug, Clone, PartialEq, Eq)] |
74 | pub struct TraitItemsIndex { | 61 | pub struct TraitItemsIndex { |
75 | traits_by_def: FxHashMap<TraitItem, Trait>, | 62 | traits_by_def: FxHashMap<AssocItem, Trait>, |
76 | } | 63 | } |
77 | 64 | ||
78 | impl TraitItemsIndex { | 65 | impl TraitItemsIndex { |
@@ -88,7 +75,7 @@ impl TraitItemsIndex { | |||
88 | index | 75 | index |
89 | } | 76 | } |
90 | 77 | ||
91 | pub(crate) fn get_parent_trait(&self, item: TraitItem) -> Option<Trait> { | 78 | pub(crate) fn get_parent_trait(&self, item: AssocItem) -> Option<Trait> { |
92 | self.traits_by_def.get(&item).cloned() | 79 | self.traits_by_def.get(&item).cloned() |
93 | } | 80 | } |
94 | } | 81 | } |