diff options
| author | Michael Goulet <michael@errs.io> | 2024-09-17 09:41:06 -0400 |
|---|---|---|
| committer | Michael Goulet <michael@errs.io> | 2024-09-17 09:41:12 -0400 |
| commit | d9624ed16c934fa108ded871e0e7725768e3359c (patch) | |
| tree | 69d93d1dd8b64ac19592751d32597d76b8dbf9d8 /compiler/rustc_hir/src/lang_items.rs | |
| parent | 46b0f8bafcf11fa1d6b6c172f4f5c1b95c11ebdb (diff) | |
| download | rust-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.rs | 11 |
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> { |
