@@ -16,7 +16,7 @@ use crate::weak_lang_items;
16
16
use rustc_hir as hir;
17
17
use rustc_hir:: def:: DefKind ;
18
18
use rustc_hir:: def_id:: DefId ;
19
- use rustc_hir:: lang_items:: { extract, GenericRequirement , ITEM_REFS } ;
19
+ use rustc_hir:: lang_items:: { extract, GenericRequirement } ;
20
20
use rustc_hir:: { HirId , LangItem , LanguageItems , Target } ;
21
21
use rustc_middle:: ty:: TyCtxt ;
22
22
use rustc_session:: cstore:: ExternCrate ;
@@ -43,17 +43,17 @@ impl<'tcx> LanguageItemCollector<'tcx> {
43
43
fn check_for_lang ( & mut self , actual_target : Target , hir_id : HirId ) {
44
44
let attrs = self . tcx . hir ( ) . attrs ( hir_id) ;
45
45
if let Some ( ( name, span) ) = extract ( & attrs) {
46
- match ITEM_REFS . get ( & name) . cloned ( ) {
46
+ match LangItem :: from_name ( name) {
47
47
// Known lang item with attribute on correct target.
48
- Some ( ( item_index , expected_target ) ) if actual_target == expected_target => {
49
- self . collect_item_extended ( item_index , hir_id, span) ;
48
+ Some ( lang_item ) if actual_target == lang_item . target ( ) => {
49
+ self . collect_item_extended ( lang_item , hir_id, span) ;
50
50
}
51
51
// Known lang item with attribute on incorrect target.
52
- Some ( ( _ , expected_target ) ) => {
52
+ Some ( lang_item ) => {
53
53
self . tcx . sess . emit_err ( LangItemOnIncorrectTarget {
54
54
span,
55
55
name,
56
- expected_target,
56
+ expected_target : lang_item . target ( ) ,
57
57
actual_target,
58
58
} ) ;
59
59
}
@@ -147,9 +147,8 @@ impl<'tcx> LanguageItemCollector<'tcx> {
147
147
148
148
// Like collect_item() above, but also checks whether the lang item is declared
149
149
// with the right number of generic arguments.
150
- fn collect_item_extended ( & mut self , item_index : usize , hir_id : HirId , span : Span ) {
150
+ fn collect_item_extended ( & mut self , lang_item : LangItem , hir_id : HirId , span : Span ) {
151
151
let item_def_id = self . tcx . hir ( ) . local_def_id ( hir_id) . to_def_id ( ) ;
152
- let lang_item = LangItem :: from_u32 ( item_index as u32 ) . unwrap ( ) ;
153
152
let name = lang_item. name ( ) ;
154
153
155
154
// Now check whether the lang_item has the expected number of generic
0 commit comments