@@ -662,7 +662,7 @@ enum MaybeExported<'a> {
662662impl MaybeExported < ' _ > {
663663 fn eval ( self , r : & Resolver < ' _ , ' _ > ) -> bool {
664664 let def_id = match self {
665- MaybeExported :: Ok ( node_id) => Some ( r. local_def_id ( node_id) ) ,
665+ MaybeExported :: Ok ( node_id) => Some ( r. node_id_to_def_id [ & node_id] ) ,
666666 MaybeExported :: Impl ( Some ( trait_def_id) ) | MaybeExported :: ImplItem ( Ok ( trait_def_id) ) => {
667667 trait_def_id. as_local ( )
668668 }
@@ -1015,36 +1015,38 @@ impl<'ast, 'ra, 'tcx> Visitor<'ast> for LateResolutionVisitor<'_, 'ast, 'ra, 'tc
10151015 ) ;
10161016 }
10171017 fn visit_foreign_item ( & mut self , foreign_item : & ' ast ForeignItem ) {
1018- self . resolve_doc_links ( & foreign_item. attrs , MaybeExported :: Ok ( foreign_item. id ) ) ;
1019- let def_kind = self . r . local_def_kind ( foreign_item. id ) ;
1020- match foreign_item. kind {
1021- ForeignItemKind :: TyAlias ( box TyAlias { ref generics, .. } ) => {
1022- self . with_generic_param_rib (
1023- & generics. params ,
1024- RibKind :: Item ( HasGenericParams :: Yes ( generics. span ) , def_kind) ,
1025- foreign_item. id ,
1026- LifetimeBinderKind :: Item ,
1027- generics. span ,
1028- |this| visit:: walk_item ( this, foreign_item) ,
1029- ) ;
1030- }
1031- ForeignItemKind :: Fn ( box Fn { ref generics, .. } ) => {
1032- self . with_generic_param_rib (
1033- & generics. params ,
1034- RibKind :: Item ( HasGenericParams :: Yes ( generics. span ) , def_kind) ,
1035- foreign_item. id ,
1036- LifetimeBinderKind :: Function ,
1037- generics. span ,
1038- |this| visit:: walk_item ( this, foreign_item) ,
1039- ) ;
1040- }
1041- ForeignItemKind :: Static ( ..) => {
1042- self . with_static_rib ( def_kind, |this| visit:: walk_item ( this, foreign_item) )
1043- }
1044- ForeignItemKind :: MacCall ( ..) => {
1045- panic ! ( "unexpanded macro in resolve!" )
1018+ self . with_owner ( foreign_item. id , |this| {
1019+ this. resolve_doc_links ( & foreign_item. attrs , MaybeExported :: Ok ( foreign_item. id ) ) ;
1020+ let def_kind = this. r . local_def_kind ( foreign_item. id ) ;
1021+ match foreign_item. kind {
1022+ ForeignItemKind :: TyAlias ( box TyAlias { ref generics, .. } ) => {
1023+ this. with_generic_param_rib (
1024+ & generics. params ,
1025+ RibKind :: Item ( HasGenericParams :: Yes ( generics. span ) , def_kind) ,
1026+ foreign_item. id ,
1027+ LifetimeBinderKind :: Item ,
1028+ generics. span ,
1029+ |this| visit:: walk_item ( this, foreign_item) ,
1030+ ) ;
1031+ }
1032+ ForeignItemKind :: Fn ( box Fn { ref generics, .. } ) => {
1033+ this. with_generic_param_rib (
1034+ & generics. params ,
1035+ RibKind :: Item ( HasGenericParams :: Yes ( generics. span ) , def_kind) ,
1036+ foreign_item. id ,
1037+ LifetimeBinderKind :: Function ,
1038+ generics. span ,
1039+ |this| visit:: walk_item ( this, foreign_item) ,
1040+ ) ;
1041+ }
1042+ ForeignItemKind :: Static ( ..) => {
1043+ this. with_static_rib ( def_kind, |this| visit:: walk_item ( this, foreign_item) )
1044+ }
1045+ ForeignItemKind :: MacCall ( ..) => {
1046+ panic ! ( "unexpanded macro in resolve!" )
1047+ }
10461048 }
1047- }
1049+ } )
10481050 }
10491051 fn visit_fn ( & mut self , fn_kind : FnKind < ' ast > , _: & AttrVec , sp : Span , fn_id : NodeId ) {
10501052 let previous_value = self . diag_metadata . current_function ;
@@ -2704,7 +2706,7 @@ impl<'a, 'ast, 'ra, 'tcx> LateResolutionVisitor<'a, 'ast, 'ra, 'tcx> {
27042706 LifetimeBinderKind :: Item ,
27052707 generics. span ,
27062708 |this| {
2707- let item_def_id = this. r . local_def_id ( item. id ) . to_def_id ( ) ;
2709+ let item_def_id = this. r . owners [ & item. id ] . def_id . to_def_id ( ) ;
27082710 this. with_self_rib (
27092711 Res :: SelfTyAlias { alias_to : item_def_id, is_trait_impl : false } ,
27102712 |this| {
@@ -2818,7 +2820,7 @@ impl<'a, 'ast, 'ra, 'tcx> LateResolutionVisitor<'a, 'ast, 'ra, 'tcx> {
28182820 LifetimeBinderKind :: Item ,
28192821 generics. span ,
28202822 |this| {
2821- let local_def_id = this. r . local_def_id ( item. id ) . to_def_id ( ) ;
2823+ let local_def_id = this. r . owners [ & item. id ] . def_id . to_def_id ( ) ;
28222824 this. with_self_rib ( Res :: SelfTyParam { trait_ : local_def_id } , |this| {
28232825 this. visit_generics ( generics) ;
28242826 walk_list ! ( this, visit_param_bound, bounds, BoundKind :: SuperTraits ) ;
@@ -2837,7 +2839,7 @@ impl<'a, 'ast, 'ra, 'tcx> LateResolutionVisitor<'a, 'ast, 'ra, 'tcx> {
28372839 LifetimeBinderKind :: Item ,
28382840 generics. span ,
28392841 |this| {
2840- let local_def_id = this. r . local_def_id ( item. id ) . to_def_id ( ) ;
2842+ let local_def_id = this. r . owners [ & item. id ] . def_id . to_def_id ( ) ;
28412843 this. with_self_rib ( Res :: SelfTyParam { trait_ : local_def_id } , |this| {
28422844 this. visit_generics ( generics) ;
28432845 walk_list ! ( this, visit_param_bound, bounds, BoundKind :: Bound ) ;
@@ -2847,7 +2849,7 @@ impl<'a, 'ast, 'ra, 'tcx> LateResolutionVisitor<'a, 'ast, 'ra, 'tcx> {
28472849 }
28482850
28492851 ItemKind :: Mod ( ..) => {
2850- let module = self . r . expect_module ( self . r . local_def_id ( item. id ) . to_def_id ( ) ) ;
2852+ let module = self . r . expect_module ( self . r . owners [ & item. id ] . def_id . to_def_id ( ) ) ;
28512853 let orig_module = replace ( & mut self . parent_scope . module , module) ;
28522854 self . with_rib ( ValueNS , RibKind :: Module ( module) , |this| {
28532855 this. with_rib ( TypeNS , RibKind :: Module ( module) , |this| {
@@ -2970,7 +2972,7 @@ impl<'a, 'ast, 'ra, 'tcx> LateResolutionVisitor<'a, 'ast, 'ra, 'tcx> {
29702972 // Maintain macro_rules scopes in the same way as during early resolution
29712973 // for diagnostics and doc links.
29722974 if macro_def. macro_rules {
2973- let def_id = self . r . local_def_id ( item. id ) ;
2975+ let def_id = self . r . owners [ & item. id ] . def_id ;
29742976 self . parent_scope . macro_rules = self . r . macro_rules_scopes [ & def_id] ;
29752977 }
29762978
@@ -3131,7 +3133,7 @@ impl<'a, 'ast, 'ra, 'tcx> LateResolutionVisitor<'a, 'ast, 'ra, 'tcx> {
31313133 continue ;
31323134 }
31333135
3134- let def_id = self . r . local_def_id ( param. id ) ;
3136+ let def_id = self . r . node_id_to_def_id [ & param. id ] ;
31353137
31363138 // Plain insert (no renaming).
31373139 let ( rib, def_kind) = match param. kind {
@@ -3446,7 +3448,7 @@ impl<'a, 'ast, 'ra, 'tcx> LateResolutionVisitor<'a, 'ast, 'ra, 'tcx> {
34463448 |this, trait_id| {
34473449 this. resolve_doc_links ( attrs, MaybeExported :: Impl ( trait_id) ) ;
34483450
3449- let item_def_id = this. r . local_def_id ( item_id) ;
3451+ let item_def_id = this. r . owners [ & item_id] . def_id ;
34503452
34513453 // Register the trait definitions from here.
34523454 if let Some ( trait_id) = trait_id {
@@ -3837,7 +3839,7 @@ impl<'a, 'ast, 'ra, 'tcx> LateResolutionVisitor<'a, 'ast, 'ra, 'tcx> {
38373839 self . visit_path ( & delegation. path ) ;
38383840
38393841 self . r . delegation_infos . insert (
3840- self . r . local_def_id ( item_id) ,
3842+ self . r . owners [ & item_id] . def_id ,
38413843 DelegationInfo {
38423844 attrs : create_delegation_attrs ( attrs) ,
38433845 resolution_node : if is_in_trait_impl { item_id } else { delegation. id } ,
@@ -4975,7 +4977,7 @@ impl<'a, 'ast, 'ra, 'tcx> LateResolutionVisitor<'a, 'ast, 'ra, 'tcx> {
49754977 && let ItemKind :: MacroDef ( ..) = item. kind
49764978 {
49774979 num_macro_definition_ribs += 1 ;
4978- let res = self . r . local_def_id ( item. id ) . to_def_id ( ) ;
4980+ let res = self . r . owners [ & item. id ] . def_id . to_def_id ( ) ;
49794981 self . ribs [ ValueNS ] . push ( Rib :: new ( RibKind :: MacroDefinition ( res) ) ) ;
49804982 self . label_ribs . push ( Rib :: new ( RibKind :: MacroDefinition ( res) ) ) ;
49814983 }
@@ -5458,7 +5460,7 @@ impl ItemInfoCollector<'_, '_, '_> {
54585460 attrs : & [ Attribute ] ,
54595461 ) {
54605462 self . r . delegation_fn_sigs . insert (
5461- self . r . local_def_id ( id ) ,
5463+ self . r . owners [ & id ] . def_id ,
54625464 DelegationFnSig {
54635465 header,
54645466 param_count : decl. inputs . len ( ) ,
@@ -5538,7 +5540,7 @@ impl<'ast> Visitor<'ast> for ItemInfoCollector<'_, '_, '_> {
55385540 self . collect_fn_info ( sig. header , & sig. decl , item. id , & item. attrs ) ;
55395541 }
55405542
5541- let def_id = self . r . local_def_id ( item. id ) ;
5543+ let def_id = self . r . owners [ & item. id ] . def_id ;
55425544 let count = generics
55435545 . params
55445546 . iter ( )
@@ -5582,7 +5584,7 @@ impl<'ast> Visitor<'ast> for ItemInfoCollector<'_, '_, '_> {
55825584 }
55835585
55845586 if let AssocItemKind :: Type ( box ast:: TyAlias { generics, .. } ) = & item. kind {
5585- let def_id = self . r . local_def_id ( item. id ) ;
5587+ let def_id = self . r . owners [ & item. id ] . def_id ;
55865588 if let Some ( suggestion) = required_generic_args_suggestion ( generics) {
55875589 self . r . item_required_generic_args_suggestions . insert ( def_id, suggestion) ;
55885590 }
0 commit comments