@@ -6,7 +6,6 @@ use super::{FnDeclKind, LoweringContext, ParamMode};
6
6
use rustc_ast:: ptr:: P ;
7
7
use rustc_ast:: visit:: AssocCtxt ;
8
8
use rustc_ast:: * ;
9
- use rustc_data_structures:: fx:: FxHashMap ;
10
9
use rustc_data_structures:: sorted_map:: SortedMap ;
11
10
use rustc_hir as hir;
12
11
use rustc_hir:: def:: { DefKind , Res } ;
@@ -67,7 +66,7 @@ impl<'a, 'hir> ItemLowerer<'a, 'hir> {
67
66
// HirId handling.
68
67
bodies : Vec :: new ( ) ,
69
68
attrs : SortedMap :: default ( ) ,
70
- children : FxHashMap :: default ( ) ,
69
+ children : Vec :: default ( ) ,
71
70
current_hir_id_owner : hir:: CRATE_OWNER_ID ,
72
71
item_local_id_counter : hir:: ItemLocalId :: new ( 0 ) ,
73
72
node_id_to_local_id : Default :: default ( ) ,
@@ -95,7 +94,13 @@ impl<'a, 'hir> ItemLowerer<'a, 'hir> {
95
94
for ( def_id, info) in lctx. children {
96
95
self . owners . ensure_contains_elem ( def_id, || hir:: MaybeOwner :: Phantom ) ;
97
96
debug_assert ! ( matches!( self . owners[ def_id] , hir:: MaybeOwner :: Phantom ) ) ;
98
- self . owners [ def_id] = info;
97
+ match ( self . owners [ def_id] , info) {
98
+ ( hir:: MaybeOwner :: Phantom , _)
99
+ | ( hir:: MaybeOwner :: NonOwner ( _) , hir:: MaybeOwner :: Owner ( _) ) => {
100
+ self . owners [ def_id] = info;
101
+ }
102
+ _ => unreachable ! ( ) ,
103
+ }
99
104
}
100
105
}
101
106
@@ -534,12 +539,12 @@ impl<'hir> LoweringContext<'_, 'hir> {
534
539
for new_node_id in [ id1, id2] {
535
540
let new_id = self . local_def_id ( new_node_id) ;
536
541
let Some ( res) = resolutions. next ( ) else {
542
+ debug_assert ! ( self . children. iter( ) . find( |( id, _) | id == & new_id) . is_none( ) ) ;
537
543
// Associate an HirId to both ids even if there is no resolution.
538
- let _old = self . children . insert (
544
+ self . children . push ( (
539
545
new_id,
540
- hir:: MaybeOwner :: NonOwner ( hir:: HirId :: make_owner ( new_id) ) ,
546
+ hir:: MaybeOwner :: NonOwner ( hir:: HirId :: make_owner ( new_id) ) ) ,
541
547
) ;
542
- debug_assert ! ( _old. is_none( ) ) ;
543
548
continue ;
544
549
} ;
545
550
let ident = * ident;
0 commit comments