diff options
author | Paul Daniel Faria <[email protected]> | 2020-06-24 13:20:41 +0100 |
---|---|---|
committer | Paul Daniel Faria <[email protected]> | 2020-06-24 13:20:41 +0100 |
commit | dfd79907b80e1a93b93e99aaf4d7af2a84c1c59f (patch) | |
tree | 9c5689af22a63c318033d7e6c7dee75fe200d851 /crates/ra_hir_def/src/item_scope.rs | |
parent | 38af81f183504145bd3bf6ba5bc40b3e41e04593 (diff) |
Use a macro in push_res to simplify code, simplify glob_shadowed_def assertion
Diffstat (limited to 'crates/ra_hir_def/src/item_scope.rs')
-rw-r--r-- | crates/ra_hir_def/src/item_scope.rs | 52 |
1 files changed, 19 insertions, 33 deletions
diff --git a/crates/ra_hir_def/src/item_scope.rs b/crates/ra_hir_def/src/item_scope.rs index 571ba3b8a..c81b966c3 100644 --- a/crates/ra_hir_def/src/item_scope.rs +++ b/crates/ra_hir_def/src/item_scope.rs | |||
@@ -5,6 +5,7 @@ use hir_expand::name::Name; | |||
5 | use once_cell::sync::Lazy; | 5 | use once_cell::sync::Lazy; |
6 | use ra_db::CrateId; | 6 | use ra_db::CrateId; |
7 | use rustc_hash::FxHashMap; | 7 | use rustc_hash::FxHashMap; |
8 | use test_utils::mark; | ||
8 | 9 | ||
9 | use crate::{ | 10 | use crate::{ |
10 | db::DefDatabase, per_ns::PerNs, visibility::Visibility, AdtId, BuiltinType, HasModule, ImplId, | 11 | db::DefDatabase, per_ns::PerNs, visibility::Visibility, AdtId, BuiltinType, HasModule, ImplId, |
@@ -126,41 +127,26 @@ impl ItemScope { | |||
126 | let mut changed = false; | 127 | let mut changed = false; |
127 | let existing = self.visible.entry(name).or_default(); | 128 | let existing = self.visible.entry(name).or_default(); |
128 | 129 | ||
129 | match (existing.types, def.types) { | 130 | macro_rules! check_changed { |
130 | (None, Some(_)) => { | 131 | ($changed:ident, $existing:expr, $def:expr) => { |
131 | existing.types = def.types; | 132 | match ($existing, $def) { |
132 | changed = true; | 133 | (None, Some(_)) => { |
133 | } | 134 | $existing = $def; |
134 | (Some(e), Some(d)) if e.0 != d.0 => { | 135 | $changed = true; |
135 | existing.types = def.types; | 136 | } |
136 | changed = true; | 137 | (Some(e), Some(d)) if e.0 != d.0 => { |
137 | } | 138 | mark::hit!(import_shadowed); |
138 | _ => {} | 139 | $existing = $def; |
139 | } | 140 | $changed = true; |
140 | 141 | } | |
141 | match (existing.values, def.values) { | 142 | _ => {} |
142 | (None, Some(_)) => { | 143 | } |
143 | existing.values = def.values; | 144 | }; |
144 | changed = true; | ||
145 | } | ||
146 | (Some(e), Some(d)) if e.0 != d.0 => { | ||
147 | existing.values = def.values; | ||
148 | changed = true; | ||
149 | } | ||
150 | _ => {} | ||
151 | } | 145 | } |
152 | 146 | ||
153 | match (existing.macros, def.macros) { | 147 | check_changed!(changed, existing.types, def.types); |
154 | (None, Some(_)) => { | 148 | check_changed!(changed, existing.values, def.values); |
155 | existing.macros = def.macros; | 149 | check_changed!(changed, existing.macros, def.macros); |
156 | changed = true; | ||
157 | } | ||
158 | (Some(e), Some(d)) if e.0 != d.0 => { | ||
159 | existing.macros = def.macros; | ||
160 | changed = true; | ||
161 | } | ||
162 | _ => {} | ||
163 | } | ||
164 | 150 | ||
165 | changed | 151 | changed |
166 | } | 152 | } |