@@ -65,12 +65,12 @@ impl<'tcx> LanguageItemCollector<'tcx> {
6565 }
6666 }
6767
68- fn collect_item ( & mut self , item_index : usize , item_def_id : DefId ) {
68+ fn collect_item ( & mut self , lang_item : LangItem , item_def_id : DefId ) {
6969 // Check for duplicates.
70- if let Some ( original_def_id) = self . items . items [ item_index ] {
70+ if let Some ( original_def_id) = self . items . get ( lang_item ) {
7171 if original_def_id != item_def_id {
7272 let local_span = self . tcx . hir ( ) . span_if_local ( item_def_id) ;
73- let lang_item_name = LangItem :: from_u32 ( item_index as u32 ) . unwrap ( ) . name ( ) ;
73+ let lang_item_name = lang_item . name ( ) ;
7474 let crate_name = self . tcx . crate_name ( item_def_id. krate ) ;
7575 let mut dependency_of = Empty ;
7676 let is_local = item_def_id. is_local ( ) ;
@@ -139,8 +139,8 @@ impl<'tcx> LanguageItemCollector<'tcx> {
139139 }
140140
141141 // Matched.
142- self . items . items [ item_index ] = Some ( item_def_id) ;
143- if let Some ( group) = LangItem :: from_u32 ( item_index as u32 ) . unwrap ( ) . group ( ) {
142+ self . items . set ( lang_item , item_def_id) ;
143+ if let Some ( group) = lang_item . group ( ) {
144144 self . items . groups [ group as usize ] . push ( item_def_id) ;
145145 }
146146 }
@@ -197,7 +197,7 @@ impl<'tcx> LanguageItemCollector<'tcx> {
197197 }
198198 }
199199
200- self . collect_item ( item_index , item_def_id) ;
200+ self . collect_item ( lang_item , item_def_id) ;
201201 }
202202}
203203
@@ -208,8 +208,8 @@ fn get_lang_items(tcx: TyCtxt<'_>, (): ()) -> LanguageItems {
208208
209209 // Collect lang items in other crates.
210210 for & cnum in tcx. crates ( ( ) ) . iter ( ) {
211- for & ( def_id, item_index ) in tcx. defined_lang_items ( cnum) . iter ( ) {
212- collector. collect_item ( item_index , def_id) ;
211+ for & ( def_id, lang_item ) in tcx. defined_lang_items ( cnum) . iter ( ) {
212+ collector. collect_item ( lang_item , def_id) ;
213213 }
214214 }
215215
0 commit comments