aboutsummaryrefslogtreecommitdiff
path: root/crates/ra_hir_def/src/item_scope.rs
diff options
context:
space:
mode:
authorAleksey Kladov <[email protected]>2019-12-22 18:31:01 +0000
committerAleksey Kladov <[email protected]>2019-12-22 18:31:01 +0000
commit007032f8504be1274972e4f23afaf0bc431d92d5 (patch)
treee6e6a7ca188f53a7fb9ff41dcd8ca931ceaffc66 /crates/ra_hir_def/src/item_scope.rs
parent78f7683b9a1c6192b4828ceedb14ed498b241263 (diff)
Refactor
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 }