@@ -43,7 +43,7 @@ use rustc_ast::walk_list;
43
43
use rustc_ast:: { self as ast, * } ;
44
44
use rustc_ast_pretty:: pprust;
45
45
use rustc_data_structures:: captures:: Captures ;
46
- use rustc_data_structures:: fx:: { FxHashMap , FxHashSet } ;
46
+ use rustc_data_structures:: fx:: FxHashSet ;
47
47
use rustc_data_structures:: sync:: Lrc ;
48
48
use rustc_errors:: { struct_span_err, Applicability } ;
49
49
use rustc_hir as hir;
@@ -198,7 +198,7 @@ pub trait ResolverAstLowering {
198
198
199
199
fn next_node_id ( & mut self ) -> NodeId ;
200
200
201
- fn take_trait_map ( & mut self ) -> NodeMap < Vec < hir:: TraitCandidate > > ;
201
+ fn trait_map ( & self ) -> & NodeMap < Vec < hir:: TraitCandidate > > ;
202
202
203
203
fn opt_local_def_id ( & self , node : NodeId ) -> Option < LocalDefId > ;
204
204
@@ -501,13 +501,14 @@ impl<'a, 'hir> LoweringContext<'a, 'hir> {
501
501
let proc_macros =
502
502
c. proc_macros . iter ( ) . map ( |id| self . node_id_to_hir_id [ * id] . unwrap ( ) ) . collect ( ) ;
503
503
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 ( ) ;
511
512
512
513
let mut def_id_to_hir_id = IndexVec :: default ( ) ;
513
514
0 commit comments