@@ -38,7 +38,9 @@ impl<'v, 'tcx> ItemLikeVisitor<'v> for DiagnosticItemCollector<'tcx> {
3838 self . observe_item ( & impl_item. attrs , impl_item. hir_id ) ;
3939 }
4040
41- fn visit_foreign_item ( & mut self , _foreign_item : & hir:: ForeignItem < ' _ > ) { }
41+ fn visit_foreign_item ( & mut self , foreign_item : & hir:: ForeignItem < ' _ > ) {
42+ self . observe_item ( foreign_item. attrs , foreign_item. hir_id ) ;
43+ }
4244}
4345
4446impl < ' tcx > DiagnosticItemCollector < ' tcx > {
@@ -102,18 +104,6 @@ fn collect<'tcx>(tcx: TyCtxt<'tcx>) -> FxHashMap<Symbol, DefId> {
102104
103105 // Collect diagnostic items in this crate.
104106 tcx. hir ( ) . krate ( ) . visit_all_item_likes ( & mut collector) ;
105- // FIXME(visit_all_item_likes): Foreign items are not visited
106- // here, so we have to manually look at them for now.
107- for ( _, foreign_module) in tcx. foreign_modules ( LOCAL_CRATE ) . iter ( ) {
108- for & foreign_item in foreign_module. foreign_items . iter ( ) {
109- match tcx. hir ( ) . get ( tcx. hir ( ) . local_def_id_to_hir_id ( foreign_item. expect_local ( ) ) ) {
110- hir:: Node :: ForeignItem ( item) => {
111- collector. observe_item ( item. attrs , item. hir_id ) ;
112- }
113- item => bug ! ( "unexpected foreign item {:?}" , item) ,
114- }
115- }
116- }
117107
118108 for m in tcx. hir ( ) . krate ( ) . exported_macros {
119109 collector. observe_item ( m. attrs , m. hir_id ) ;
0 commit comments