Unnamed repository; edit this file 'description' to name the repository.
Diffstat (limited to 'crates/hir-def/src/item_scope.rs')
| -rw-r--r-- | crates/hir-def/src/item_scope.rs | 42 |
1 files changed, 20 insertions, 22 deletions
diff --git a/crates/hir-def/src/item_scope.rs b/crates/hir-def/src/item_scope.rs index ddccbbfef9..e50cc307dd 100644 --- a/crates/hir-def/src/item_scope.rs +++ b/crates/hir-def/src/item_scope.rs @@ -270,35 +270,33 @@ impl ItemScope { $glob_imports:ident [ $lookup:ident ], $def_import_type:ident ) => {{ - let existing = $this.$field.entry($lookup.1.clone()); - match (existing, $def.$field) { - (Entry::Vacant(entry), Some(_)) => { - match $def_import_type { - ImportType::Glob => { - $glob_imports.$field.insert($lookup.clone()); + if let Some(fld) = $def.$field { + let existing = $this.$field.entry($lookup.1.clone()); + match existing { + Entry::Vacant(entry) => { + match $def_import_type { + ImportType::Glob => { + $glob_imports.$field.insert($lookup.clone()); + } + ImportType::Named => { + $glob_imports.$field.remove(&$lookup); + } } - ImportType::Named => { - $glob_imports.$field.remove(&$lookup); - } - } - if let Some(fld) = $def.$field { entry.insert(fld); + $changed = true; } - $changed = true; - } - (Entry::Occupied(mut entry), Some(_)) - if $glob_imports.$field.contains(&$lookup) - && matches!($def_import_type, ImportType::Named) => - { - cov_mark::hit!(import_shadowed); - $glob_imports.$field.remove(&$lookup); - if let Some(fld) = $def.$field { + Entry::Occupied(mut entry) + if $glob_imports.$field.contains(&$lookup) + && matches!($def_import_type, ImportType::Named) => + { + cov_mark::hit!(import_shadowed); + $glob_imports.$field.remove(&$lookup); entry.insert(fld); + $changed = true; } - $changed = true; + _ => {} } - _ => {} } }}; } |