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.rs7
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]> {