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 | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/crates/hir-def/src/item_scope.rs b/crates/hir-def/src/item_scope.rs index 16283a2cb3..ac1d2fd2a4 100644 --- a/crates/hir-def/src/item_scope.rs +++ b/crates/hir-def/src/item_scope.rs @@ -483,8 +483,11 @@ impl ItemScope { } pub(crate) fn remove_from_value_ns(&mut self, name: &Name, def: ModuleDefId) { - let entry = self.values.shift_remove(name); - assert!(entry.is_some_and(|entry| entry.def == def)) + // predicate needed since a different item with the same name may be registered instead, + // leading to `shift_remove` removing the wrong item. + if self.values.get(name).is_some_and(|entry| entry.def == def) { + let _ = self.values.shift_remove(name); + } } pub(crate) fn get_legacy_macro(&self, name: &Name) -> Option<&[MacroId]> { |