diff options
Diffstat (limited to 'crates/ra_hir_def/src/item_scope.rs')
-rw-r--r-- | crates/ra_hir_def/src/item_scope.rs | 20 |
1 files changed, 19 insertions, 1 deletions
diff --git a/crates/ra_hir_def/src/item_scope.rs b/crates/ra_hir_def/src/item_scope.rs index eab3e2fff..a96b5cfd2 100644 --- a/crates/ra_hir_def/src/item_scope.rs +++ b/crates/ra_hir_def/src/item_scope.rs | |||
@@ -5,7 +5,7 @@ use hir_expand::name::Name; | |||
5 | use once_cell::sync::Lazy; | 5 | use once_cell::sync::Lazy; |
6 | use rustc_hash::FxHashMap; | 6 | use rustc_hash::FxHashMap; |
7 | 7 | ||
8 | use crate::{per_ns::PerNs, BuiltinType, ImplId, MacroDefId, ModuleDefId, TraitId}; | 8 | use crate::{per_ns::PerNs, AdtId, BuiltinType, ImplId, MacroDefId, ModuleDefId, TraitId}; |
9 | 9 | ||
10 | #[derive(Debug, Default, PartialEq, Eq)] | 10 | #[derive(Debug, Default, PartialEq, Eq)] |
11 | pub struct ItemScope { | 11 | pub struct ItemScope { |
@@ -153,3 +153,21 @@ pub struct Resolution { | |||
153 | pub def: PerNs, | 153 | pub def: PerNs, |
154 | pub(crate) import: bool, | 154 | pub(crate) import: bool, |
155 | } | 155 | } |
156 | |||
157 | impl From<ModuleDefId> for PerNs { | ||
158 | fn from(def: ModuleDefId) -> PerNs { | ||
159 | match def { | ||
160 | ModuleDefId::ModuleId(_) => PerNs::types(def), | ||
161 | ModuleDefId::FunctionId(_) => PerNs::values(def), | ||
162 | ModuleDefId::AdtId(adt) => match adt { | ||
163 | AdtId::StructId(_) | AdtId::UnionId(_) => PerNs::both(def, def), | ||
164 | AdtId::EnumId(_) => PerNs::types(def), | ||
165 | }, | ||
166 | ModuleDefId::EnumVariantId(_) => PerNs::both(def, def), | ||
167 | ModuleDefId::ConstId(_) | ModuleDefId::StaticId(_) => PerNs::values(def), | ||
168 | ModuleDefId::TraitId(_) => PerNs::types(def), | ||
169 | ModuleDefId::TypeAliasId(_) => PerNs::types(def), | ||
170 | ModuleDefId::BuiltinType(_) => PerNs::types(def), | ||
171 | } | ||
172 | } | ||
173 | } | ||