@@ -43,7 +43,7 @@ use rustc_ast::walk_list;
4343use rustc_ast:: { self as ast, * } ;
4444use rustc_ast_pretty:: pprust;
4545use rustc_data_structures:: captures:: Captures ;
46- use rustc_data_structures:: fx:: { FxHashMap , FxHashSet } ;
46+ use rustc_data_structures:: fx:: FxHashSet ;
4747use rustc_data_structures:: sync:: Lrc ;
4848use rustc_errors:: { struct_span_err, Applicability } ;
4949use rustc_hir as hir;
@@ -198,7 +198,7 @@ pub trait ResolverAstLowering {
198198
199199 fn next_node_id ( & mut self ) -> NodeId ;
200200
201- fn take_trait_map ( & mut self ) -> NodeMap < Vec < hir:: TraitCandidate > > ;
201+ fn trait_map ( & self ) -> & NodeMap < Vec < hir:: TraitCandidate > > ;
202202
203203 fn opt_local_def_id ( & self , node : NodeId ) -> Option < LocalDefId > ;
204204
@@ -501,13 +501,14 @@ impl<'a, 'hir> LoweringContext<'a, 'hir> {
501501 let proc_macros =
502502 c. proc_macros . iter ( ) . map ( |id| self . node_id_to_hir_id [ * id] . unwrap ( ) ) . collect ( ) ;
503503
504- let mut trait_map: FxHashMap < _ , FxHashMap < _ , _ > > = FxHashMap :: default ( ) ;
505- for ( k, v) in self . resolver . take_trait_map ( ) . into_iter ( ) {
506- if let Some ( Some ( hir_id) ) = self . node_id_to_hir_id . get ( k) {
507- let map = trait_map. entry ( hir_id. owner ) . or_default ( ) ;
508- map. insert ( hir_id. local_id , v. into_boxed_slice ( ) ) ;
509- }
510- }
504+ let trait_map = self
505+ . resolver
506+ . trait_map ( )
507+ . iter ( )
508+ . filter_map ( |( & k, v) | {
509+ self . node_id_to_hir_id . get ( k) . and_then ( |id| id. as_ref ( ) ) . map ( |id| ( * id, v. clone ( ) ) )
510+ } )
511+ . collect ( ) ;
511512
512513 let mut def_id_to_hir_id = IndexVec :: default ( ) ;
513514
0 commit comments