about summary refs log tree commit diff
path: root/compiler/rustc_hir/src/lang_items.rs
diff options
context:
space:
mode:
authorMichael Goulet <michael@errs.io>2024-09-17 09:41:06 -0400
committerMichael Goulet <michael@errs.io>2024-09-17 09:41:12 -0400
commitd9624ed16c934fa108ded871e0e7725768e3359c (patch)
tree69d93d1dd8b64ac19592751d32597d76b8dbf9d8 /compiler/rustc_hir/src/lang_items.rs
parent46b0f8bafcf11fa1d6b6c172f4f5c1b95c11ebdb (diff)
downloadrust-d9624ed16c934fa108ded871e0e7725768e3359c.tar.gz
rust-d9624ed16c934fa108ded871e0e7725768e3359c.zip
Make sure that def id <=> lang item map is bidirectional
Diffstat (limited to 'compiler/rustc_hir/src/lang_items.rs')
-rw-r--r--compiler/rustc_hir/src/lang_items.rs11
1 files changed, 10 insertions, 1 deletions
diff --git a/compiler/rustc_hir/src/lang_items.rs b/compiler/rustc_hir/src/lang_items.rs
index e7398fd2226..c148dc7f53b 100644
--- a/compiler/rustc_hir/src/lang_items.rs
+++ b/compiler/rustc_hir/src/lang_items.rs
@@ -45,7 +45,16 @@ impl LanguageItems {
 
     pub fn set(&mut self, item: LangItem, def_id: DefId) {
         self.items[item as usize] = Some(def_id);
-        self.reverse_items.insert(def_id, item);
+        let preexisting = self.reverse_items.insert(def_id, item);
+
+        // This needs to be a bijection.
+        if let Some(preexisting) = preexisting {
+            panic!(
+                "For the bijection of LangItem <=> DefId to work,\
+                one item DefId may only be assigned one LangItem. \
+                Separate the LangItem definitions for {item:?} and {preexisting:?}."
+            );
+        }
     }
 
     pub fn from_def_id(&self, def_id: DefId) -> Option<LangItem> {