diff options
Diffstat (limited to 'crates/ra_hir_def/src/item_scope.rs')
-rw-r--r-- | crates/ra_hir_def/src/item_scope.rs | 12 |
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 | } |