aboutsummaryrefslogtreecommitdiff
path: root/crates/ra_hir_def/src/item_scope.rs
diff options
context:
space:
mode:
Diffstat (limited to 'crates/ra_hir_def/src/item_scope.rs')
-rw-r--r--crates/ra_hir_def/src/item_scope.rs12
1 files changed, 7 insertions, 5 deletions
diff --git a/crates/ra_hir_def/src/item_scope.rs b/crates/ra_hir_def/src/item_scope.rs
index f1adc3b58..08d788cc9 100644
--- a/crates/ra_hir_def/src/item_scope.rs
+++ b/crates/ra_hir_def/src/item_scope.rs
@@ -70,18 +70,20 @@ impl ItemScope {
70 } 70 }
71 71
72 /// Get a name from current module scope, legacy macros are not included 72 /// Get a name from current module scope, legacy macros are not included
73 pub(crate) fn get(&self, name: &Name, shadow: BuiltinShadowMode) -> Option<&PerNs> { 73 pub(crate) fn get(&self, name: &Name, shadow: BuiltinShadowMode) -> Option<PerNs> {
74 match shadow { 74 match shadow {
75 BuiltinShadowMode::Module => self.visible.get(name).or_else(|| BUILTIN_SCOPE.get(name)), 75 BuiltinShadowMode::Module => {
76 self.visible.get(name).or_else(|| BUILTIN_SCOPE.get(name)).copied()
77 }
76 BuiltinShadowMode::Other => { 78 BuiltinShadowMode::Other => {
77 let item = self.visible.get(name); 79 let item = self.visible.get(name).copied();
78 if let Some(def) = item { 80 if let Some(def) = item {
79 if let Some(ModuleDefId::ModuleId(_)) = def.take_types() { 81 if let Some(ModuleDefId::ModuleId(_)) = def.take_types() {
80 return BUILTIN_SCOPE.get(name).or(item); 82 return BUILTIN_SCOPE.get(name).copied().or(item);
81 } 83 }
82 } 84 }
83 85
84 item.or_else(|| BUILTIN_SCOPE.get(name)) 86 item.or_else(|| BUILTIN_SCOPE.get(name).copied())
85 } 87 }
86 } 88 }
87 } 89 }