diff options
Diffstat (limited to 'crates/ra_hir_def/src/item_scope.rs')
-rw-r--r-- | crates/ra_hir_def/src/item_scope.rs | 39 |
1 files changed, 26 insertions, 13 deletions
diff --git a/crates/ra_hir_def/src/item_scope.rs b/crates/ra_hir_def/src/item_scope.rs index b0288ee8d..d77f37f67 100644 --- a/crates/ra_hir_def/src/item_scope.rs +++ b/crates/ra_hir_def/src/item_scope.rs | |||
@@ -5,7 +5,10 @@ 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, AdtId, BuiltinType, ImplId, MacroDefId, ModuleDefId, TraitId}; | 8 | use crate::{ |
9 | per_ns::PerNs, visibility::ResolvedVisibility, AdtId, BuiltinType, ImplId, MacroDefId, | ||
10 | ModuleDefId, TraitId, | ||
11 | }; | ||
9 | 12 | ||
10 | #[derive(Debug, Default, PartialEq, Eq)] | 13 | #[derive(Debug, Default, PartialEq, Eq)] |
11 | pub struct ItemScope { | 14 | pub struct ItemScope { |
@@ -30,7 +33,9 @@ pub struct ItemScope { | |||
30 | static BUILTIN_SCOPE: Lazy<FxHashMap<Name, PerNs>> = Lazy::new(|| { | 33 | static BUILTIN_SCOPE: Lazy<FxHashMap<Name, PerNs>> = Lazy::new(|| { |
31 | BuiltinType::ALL | 34 | BuiltinType::ALL |
32 | .iter() | 35 | .iter() |
33 | .map(|(name, ty)| (name.clone(), PerNs::types(ty.clone().into()))) | 36 | .map(|(name, ty)| { |
37 | (name.clone(), PerNs::types(ty.clone().into(), ResolvedVisibility::Public)) | ||
38 | }) | ||
34 | .collect() | 39 | .collect() |
35 | }); | 40 | }); |
36 | 41 | ||
@@ -144,29 +149,37 @@ impl ItemScope { | |||
144 | changed | 149 | changed |
145 | } | 150 | } |
146 | 151 | ||
152 | #[cfg(test)] | ||
147 | pub(crate) fn collect_resolutions(&self) -> Vec<(Name, PerNs)> { | 153 | pub(crate) fn collect_resolutions(&self) -> Vec<(Name, PerNs)> { |
148 | self.visible.iter().map(|(name, res)| (name.clone(), res.clone())).collect() | 154 | self.visible.iter().map(|(name, res)| (name.clone(), res.clone())).collect() |
149 | } | 155 | } |
150 | 156 | ||
157 | pub(crate) fn collect_resolutions_with_vis( | ||
158 | &self, | ||
159 | vis: ResolvedVisibility, | ||
160 | ) -> Vec<(Name, PerNs)> { | ||
161 | self.visible.iter().map(|(name, res)| (name.clone(), res.with_visibility(vis))).collect() | ||
162 | } | ||
163 | |||
151 | pub(crate) fn collect_legacy_macros(&self) -> FxHashMap<Name, MacroDefId> { | 164 | pub(crate) fn collect_legacy_macros(&self) -> FxHashMap<Name, MacroDefId> { |
152 | self.legacy_macros.clone() | 165 | self.legacy_macros.clone() |
153 | } | 166 | } |
154 | } | 167 | } |
155 | 168 | ||
156 | impl From<ModuleDefId> for PerNs { | 169 | impl PerNs { |
157 | fn from(def: ModuleDefId) -> PerNs { | 170 | pub(crate) fn from_def(def: ModuleDefId, v: ResolvedVisibility) -> PerNs { |
158 | match def { | 171 | match def { |
159 | ModuleDefId::ModuleId(_) => PerNs::types(def), | 172 | ModuleDefId::ModuleId(_) => PerNs::types(def, v), |
160 | ModuleDefId::FunctionId(_) => PerNs::values(def), | 173 | ModuleDefId::FunctionId(_) => PerNs::values(def, v), |
161 | ModuleDefId::AdtId(adt) => match adt { | 174 | ModuleDefId::AdtId(adt) => match adt { |
162 | AdtId::StructId(_) | AdtId::UnionId(_) => PerNs::both(def, def), | 175 | AdtId::StructId(_) | AdtId::UnionId(_) => PerNs::both(def, def, v), |
163 | AdtId::EnumId(_) => PerNs::types(def), | 176 | AdtId::EnumId(_) => PerNs::types(def, v), |
164 | }, | 177 | }, |
165 | ModuleDefId::EnumVariantId(_) => PerNs::both(def, def), | 178 | ModuleDefId::EnumVariantId(_) => PerNs::both(def, def, v), |
166 | ModuleDefId::ConstId(_) | ModuleDefId::StaticId(_) => PerNs::values(def), | 179 | ModuleDefId::ConstId(_) | ModuleDefId::StaticId(_) => PerNs::values(def, v), |
167 | ModuleDefId::TraitId(_) => PerNs::types(def), | 180 | ModuleDefId::TraitId(_) => PerNs::types(def, v), |
168 | ModuleDefId::TypeAliasId(_) => PerNs::types(def), | 181 | ModuleDefId::TypeAliasId(_) => PerNs::types(def, v), |
169 | ModuleDefId::BuiltinType(_) => PerNs::types(def), | 182 | ModuleDefId::BuiltinType(_) => PerNs::types(def, v), |
170 | } | 183 | } |
171 | } | 184 | } |
172 | } | 185 | } |