Skip to content

Commit 7e67d90

Browse files
authored
Rollup merge of rust-lang#130468 - compiler-errors:bidi, r=Nadrieril
Make sure that def id <=> lang item map is bidirectional Self-explanatory from assertion. Just makes sure of an invariant that I forgot to enforce when I added `LanguageItems::from_def_id`.
2 parents b21581d + d9624ed commit 7e67d90

File tree

1 file changed

+10
-1
lines changed

1 file changed

+10
-1
lines changed

Diff for: compiler/rustc_hir/src/lang_items.rs

+10-1
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,16 @@ impl LanguageItems {
4545

4646
pub fn set(&mut self, item: LangItem, def_id: DefId) {
4747
self.items[item as usize] = Some(def_id);
48-
self.reverse_items.insert(def_id, item);
48+
let preexisting = self.reverse_items.insert(def_id, item);
49+
50+
// This needs to be a bijection.
51+
if let Some(preexisting) = preexisting {
52+
panic!(
53+
"For the bijection of LangItem <=> DefId to work,\
54+
one item DefId may only be assigned one LangItem. \
55+
Separate the LangItem definitions for {item:?} and {preexisting:?}."
56+
);
57+
}
4958
}
5059

5160
pub fn from_def_id(&self, def_id: DefId) -> Option<LangItem> {

0 commit comments

Comments
 (0)