diff options
Diffstat (limited to 'crates/ra_hir_def')
-rw-r--r-- | crates/ra_hir_def/src/item_scope.rs | 16 |
1 files changed, 8 insertions, 8 deletions
diff --git a/crates/ra_hir_def/src/item_scope.rs b/crates/ra_hir_def/src/item_scope.rs index 9e082c5f7..eab3e2fff 100644 --- a/crates/ra_hir_def/src/item_scope.rs +++ b/crates/ra_hir_def/src/item_scope.rs | |||
@@ -9,7 +9,7 @@ use crate::{per_ns::PerNs, 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 { |
12 | items: FxHashMap<Name, Resolution>, | 12 | visible: FxHashMap<Name, Resolution>, |
13 | impls: Vec<ImplId>, | 13 | impls: Vec<ImplId>, |
14 | /// Macros visible in current module in legacy textual scope | 14 | /// Macros visible in current module in legacy textual scope |
15 | /// | 15 | /// |
@@ -49,7 +49,7 @@ pub(crate) enum BuiltinShadowMode { | |||
49 | impl ItemScope { | 49 | impl ItemScope { |
50 | pub fn entries<'a>(&'a self) -> impl Iterator<Item = (&'a Name, &'a Resolution)> + 'a { | 50 | pub fn entries<'a>(&'a self) -> impl Iterator<Item = (&'a Name, &'a Resolution)> + 'a { |
51 | //FIXME: shadowing | 51 | //FIXME: shadowing |
52 | self.items.iter().chain(BUILTIN_SCOPE.iter()) | 52 | self.visible.iter().chain(BUILTIN_SCOPE.iter()) |
53 | } | 53 | } |
54 | 54 | ||
55 | pub fn declarations(&self) -> impl Iterator<Item = ModuleDefId> + '_ { | 55 | pub fn declarations(&self) -> impl Iterator<Item = ModuleDefId> + '_ { |
@@ -66,7 +66,7 @@ impl ItemScope { | |||
66 | 66 | ||
67 | /// Iterate over all module scoped macros | 67 | /// Iterate over all module scoped macros |
68 | pub(crate) fn macros<'a>(&'a self) -> impl Iterator<Item = (&'a Name, MacroDefId)> + 'a { | 68 | pub(crate) fn macros<'a>(&'a self) -> impl Iterator<Item = (&'a Name, MacroDefId)> + 'a { |
69 | self.items | 69 | self.visible |
70 | .iter() | 70 | .iter() |
71 | .filter_map(|(name, res)| res.def.take_macros().map(|macro_| (name, macro_))) | 71 | .filter_map(|(name, res)| res.def.take_macros().map(|macro_| (name, macro_))) |
72 | } | 72 | } |
@@ -79,9 +79,9 @@ impl ItemScope { | |||
79 | /// Get a name from current module scope, legacy macros are not included | 79 | /// Get a name from current module scope, legacy macros are not included |
80 | pub(crate) fn get(&self, name: &Name, shadow: BuiltinShadowMode) -> Option<&Resolution> { | 80 | pub(crate) fn get(&self, name: &Name, shadow: BuiltinShadowMode) -> Option<&Resolution> { |
81 | match shadow { | 81 | match shadow { |
82 | BuiltinShadowMode::Module => self.items.get(name).or_else(|| BUILTIN_SCOPE.get(name)), | 82 | BuiltinShadowMode::Module => self.visible.get(name).or_else(|| BUILTIN_SCOPE.get(name)), |
83 | BuiltinShadowMode::Other => { | 83 | BuiltinShadowMode::Other => { |
84 | let item = self.items.get(name); | 84 | let item = self.visible.get(name); |
85 | if let Some(res) = item { | 85 | if let Some(res) = item { |
86 | if let Some(ModuleDefId::ModuleId(_)) = res.def.take_types() { | 86 | if let Some(ModuleDefId::ModuleId(_)) = res.def.take_types() { |
87 | return BUILTIN_SCOPE.get(name).or(item); | 87 | return BUILTIN_SCOPE.get(name).or(item); |
@@ -94,7 +94,7 @@ impl ItemScope { | |||
94 | } | 94 | } |
95 | 95 | ||
96 | pub(crate) fn traits<'a>(&'a self) -> impl Iterator<Item = TraitId> + 'a { | 96 | pub(crate) fn traits<'a>(&'a self) -> impl Iterator<Item = TraitId> + 'a { |
97 | self.items.values().filter_map(|r| match r.def.take_types() { | 97 | self.visible.values().filter_map(|r| match r.def.take_types() { |
98 | Some(ModuleDefId::TraitId(t)) => Some(t), | 98 | Some(ModuleDefId::TraitId(t)) => Some(t), |
99 | _ => None, | 99 | _ => None, |
100 | }) | 100 | }) |
@@ -114,7 +114,7 @@ impl ItemScope { | |||
114 | 114 | ||
115 | pub(crate) fn push_res(&mut self, name: Name, res: &Resolution, import: bool) -> bool { | 115 | pub(crate) fn push_res(&mut self, name: Name, res: &Resolution, import: bool) -> bool { |
116 | let mut changed = false; | 116 | let mut changed = false; |
117 | let existing = self.items.entry(name.clone()).or_default(); | 117 | let existing = self.visible.entry(name.clone()).or_default(); |
118 | 118 | ||
119 | if existing.def.types.is_none() && res.def.types.is_some() { | 119 | if existing.def.types.is_none() && res.def.types.is_some() { |
120 | existing.def.types = res.def.types; | 120 | existing.def.types = res.def.types; |
@@ -139,7 +139,7 @@ impl ItemScope { | |||
139 | } | 139 | } |
140 | 140 | ||
141 | pub(crate) fn collect_resolutions(&self) -> Vec<(Name, Resolution)> { | 141 | pub(crate) fn collect_resolutions(&self) -> Vec<(Name, Resolution)> { |
142 | self.items.iter().map(|(name, res)| (name.clone(), res.clone())).collect() | 142 | self.visible.iter().map(|(name, res)| (name.clone(), res.clone())).collect() |
143 | } | 143 | } |
144 | 144 | ||
145 | pub(crate) fn collect_legacy_macros(&self) -> FxHashMap<Name, MacroDefId> { | 145 | pub(crate) fn collect_legacy_macros(&self) -> FxHashMap<Name, MacroDefId> { |