aboutsummaryrefslogtreecommitdiff
path: root/crates/ra_hir_def/src/item_scope.rs
diff options
context:
space:
mode:
authorAleksey Kladov <[email protected]>2019-12-22 14:08:57 +0000
committerAleksey Kladov <[email protected]>2019-12-22 14:10:19 +0000
commite69af8596262931f8e55b7f9203f65d14827e2d8 (patch)
tree0a56660b8c14cb46cee93470a1e7608136b67b5e /crates/ra_hir_def/src/item_scope.rs
parentfe38fffaa90f656abbeff7b8a167afc45cc492a9 (diff)
Refactor PerNs construction
Diffstat (limited to 'crates/ra_hir_def/src/item_scope.rs')
-rw-r--r--crates/ra_hir_def/src/item_scope.rs20
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;
5use once_cell::sync::Lazy; 5use once_cell::sync::Lazy;
6use rustc_hash::FxHashMap; 6use rustc_hash::FxHashMap;
7 7
8use crate::{per_ns::PerNs, BuiltinType, ImplId, MacroDefId, ModuleDefId, TraitId}; 8use crate::{per_ns::PerNs, AdtId, BuiltinType, ImplId, MacroDefId, ModuleDefId, TraitId};
9 9
10#[derive(Debug, Default, PartialEq, Eq)] 10#[derive(Debug, Default, PartialEq, Eq)]
11pub struct ItemScope { 11pub 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
157impl 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}