@@ -14,7 +14,6 @@ use rustc_hir::def_id::{
1414} ;
1515use rustc_hir:: definitions:: DefPathData ;
1616use rustc_hir:: intravisit:: { self , Visitor } ;
17- use rustc_hir:: itemlikevisit:: ItemLikeVisitor ;
1817use rustc_hir:: lang_items;
1918use rustc_hir:: { AnonConst , GenericParamKind } ;
2019use rustc_index:: bit_set:: GrowableBitSet ;
@@ -2243,26 +2242,16 @@ pub fn provide(providers: &mut Providers) {
22432242 traits_in_crate : |tcx, cnum| {
22442243 assert_eq ! ( cnum, LOCAL_CRATE ) ;
22452244
2246- #[ derive( Default ) ]
2247- struct TraitsVisitor {
2248- traits : Vec < DefId > ,
2249- }
2250- impl ItemLikeVisitor < ' _ > for TraitsVisitor {
2251- fn visit_item ( & mut self , item : & hir:: Item < ' _ > ) {
2252- if let hir:: ItemKind :: Trait ( ..) | hir:: ItemKind :: TraitAlias ( ..) = item. kind {
2253- self . traits . push ( item. def_id . to_def_id ( ) ) ;
2254- }
2245+ let mut traits = Vec :: new ( ) ;
2246+ for id in tcx. hir ( ) . items ( ) {
2247+ if matches ! ( tcx. def_kind( id. def_id) , DefKind :: Trait | DefKind :: TraitAlias ) {
2248+ traits. push ( id. def_id . to_def_id ( ) )
22552249 }
2256- fn visit_trait_item ( & mut self , _trait_item : & hir:: TraitItem < ' _ > ) { }
2257- fn visit_impl_item ( & mut self , _impl_item : & hir:: ImplItem < ' _ > ) { }
2258- fn visit_foreign_item ( & mut self , _foreign_item : & hir:: ForeignItem < ' _ > ) { }
22592250 }
22602251
2261- let mut visitor = TraitsVisitor :: default ( ) ;
2262- tcx. hir ( ) . visit_all_item_likes ( & mut visitor) ;
22632252 // Bring everything into deterministic order.
2264- visitor . traits . sort_by_cached_key ( |& def_id| tcx. def_path_hash ( def_id) ) ;
2265- tcx. arena . alloc_slice ( & visitor . traits )
2253+ traits. sort_by_cached_key ( |& def_id| tcx. def_path_hash ( def_id) ) ;
2254+ tcx. arena . alloc_slice ( & traits)
22662255 } ,
22672256
22682257 ..* providers
0 commit comments