@@ -39,7 +39,7 @@ use crate::dep_graph::DepGraph;
3939use crate :: hir:: { self , ParamName } ;
4040use crate :: hir:: HirVec ;
4141use crate :: hir:: map:: { DefKey , DefPathData , Definitions } ;
42- use crate :: hir:: def_id:: { DefId , DefIndex , CRATE_DEF_INDEX } ;
42+ use crate :: hir:: def_id:: { DefId , CRATE_DEF_INDEX , LocalDefId } ;
4343use crate :: hir:: def:: { Namespace , Res , DefKind , PartialRes , PerNS } ;
4444use crate :: hir:: { GenericArg , ConstArg } ;
4545use crate :: hir:: ptr:: P ;
@@ -149,7 +149,7 @@ pub struct LoweringContext<'a> {
149149
150150 type_def_lifetime_params : DefIdMap < usize > ,
151151
152- current_hir_id_owner : Vec < ( DefIndex , u32 ) > ,
152+ current_hir_id_owner : Vec < ( LocalDefId , u32 ) > ,
153153 item_local_id_counters : NodeMap < u32 > ,
154154 node_id_to_hir_id : IndexVec < NodeId , hir:: HirId > ,
155155
@@ -273,7 +273,9 @@ pub fn lower_crate(
273273 anonymous_lifetime_mode : AnonymousLifetimeMode :: PassThrough ,
274274 type_def_lifetime_params : Default :: default ( ) ,
275275 current_module : hir:: CRATE_HIR_ID ,
276- current_hir_id_owner : vec ! [ ( CRATE_DEF_INDEX , 0 ) ] ,
276+ current_hir_id_owner : vec ! [
277+ ( LocalDefId { index: CRATE_DEF_INDEX } , 0 ) ,
278+ ] ,
277279 item_local_id_counters : Default :: default ( ) ,
278280 node_id_to_hir_id : IndexVec :: new ( ) ,
279281 generator_kind : None ,
@@ -397,13 +399,13 @@ impl<'a> LoweringContext<'a> {
397399 fn allocate_use_tree_hir_id_counters (
398400 & mut self ,
399401 tree : & UseTree ,
400- owner : DefIndex ,
402+ owner : LocalDefId ,
401403 ) {
402404 match tree. kind {
403405 UseTreeKind :: Simple ( _, id1, id2) => {
404406 for & id in & [ id1, id2] {
405407 self . lctx . resolver . definitions ( ) . create_def_with_parent (
406- owner,
408+ owner. index ,
407409 id,
408410 DefPathData :: Misc ,
409411 ExpnId :: root ( ) ,
@@ -416,7 +418,10 @@ impl<'a> LoweringContext<'a> {
416418 UseTreeKind :: Nested ( ref trees) => {
417419 for & ( ref use_tree, id) in trees {
418420 let hir_id = self . lctx . allocate_hir_id_counter ( id) ;
419- self . allocate_use_tree_hir_id_counters ( use_tree, hir_id. owner ) ;
421+ self . allocate_use_tree_hir_id_counters (
422+ use_tree,
423+ hir_id. owner_local_def_id ( ) ,
424+ ) ;
420425 }
421426 }
422427 }
@@ -454,7 +459,8 @@ impl<'a> LoweringContext<'a> {
454459 | ItemKind :: TyAlias ( _, ref generics)
455460 | ItemKind :: OpaqueTy ( _, ref generics)
456461 | ItemKind :: Trait ( _, _, ref generics, ..) => {
457- let def_id = self . lctx . resolver . definitions ( ) . local_def_id ( item. id ) ;
462+ let def_id = self . lctx . resolver . definitions ( ) . local_def_id ( item. id )
463+ . assert_local ( ) ;
458464 let count = generics
459465 . params
460466 . iter ( )
@@ -463,10 +469,13 @@ impl<'a> LoweringContext<'a> {
463469 _ => false ,
464470 } )
465471 . count ( ) ;
466- self . lctx . type_def_lifetime_params . insert ( def_id, count) ;
472+ self . lctx . type_def_lifetime_params . insert ( def_id. to_def_id ( ) , count) ;
467473 }
468474 ItemKind :: Use ( ref use_tree) => {
469- self . allocate_use_tree_hir_id_counters ( use_tree, hir_id. owner ) ;
475+ self . allocate_use_tree_hir_id_counters (
476+ use_tree,
477+ hir_id. owner_local_def_id ( ) ,
478+ ) ;
470479 }
471480 _ => { }
472481 }
@@ -611,12 +620,12 @@ impl<'a> LoweringContext<'a> {
611620 let counter = self . item_local_id_counters
612621 . insert ( owner, HIR_ID_COUNTER_LOCKED )
613622 . unwrap_or_else ( || panic ! ( "no `item_local_id_counters` entry for {:?}" , owner) ) ;
614- let def_index = self . resolver . definitions ( ) . opt_def_index ( owner) . unwrap ( ) ;
615- self . current_hir_id_owner . push ( ( def_index , counter) ) ;
623+ let def_id = self . resolver . definitions ( ) . local_def_id ( owner) . assert_local ( ) ;
624+ self . current_hir_id_owner . push ( ( def_id , counter) ) ;
616625 let ret = f ( self ) ;
617- let ( new_def_index , new_counter) = self . current_hir_id_owner . pop ( ) . unwrap ( ) ;
626+ let ( new_def_id , new_counter) = self . current_hir_id_owner . pop ( ) . unwrap ( ) ;
618627
619- debug_assert ! ( def_index == new_def_index ) ;
628+ debug_assert ! ( def_id == new_def_id ) ;
620629 debug_assert ! ( new_counter >= counter) ;
621630
622631 let prev = self . item_local_id_counters
@@ -634,12 +643,12 @@ impl<'a> LoweringContext<'a> {
634643 /// properly. Calling the method twice with the same `NodeId` is fine though.
635644 fn lower_node_id ( & mut self , ast_node_id : NodeId ) -> hir:: HirId {
636645 self . lower_node_id_generic ( ast_node_id, |this| {
637- let & mut ( def_index , ref mut local_id_counter) =
646+ let & mut ( def_id , ref mut local_id_counter) =
638647 this. current_hir_id_owner . last_mut ( ) . unwrap ( ) ;
639648 let local_id = * local_id_counter;
640649 * local_id_counter += 1 ;
641650 hir:: HirId {
642- owner : def_index ,
651+ owner : def_id . index ,
643652 local_id : hir:: ItemLocalId :: from_u32 ( local_id) ,
644653 }
645654 } )
@@ -744,7 +753,7 @@ impl<'a> LoweringContext<'a> {
744753 /// parameter while `f` is running (and restored afterwards).
745754 fn collect_in_band_defs < T , F > (
746755 & mut self ,
747- parent_id : DefId ,
756+ parent_def_id : LocalDefId ,
748757 anonymous_lifetime_mode : AnonymousLifetimeMode ,
749758 f : F ,
750759 ) -> ( Vec < hir:: GenericParam > , T )
@@ -768,7 +777,7 @@ impl<'a> LoweringContext<'a> {
768777 let params = lifetimes_to_define
769778 . into_iter ( )
770779 . map ( |( span, hir_name) | self . lifetime_to_generic_param (
771- span, hir_name, parent_id . index ,
780+ span, hir_name, parent_def_id ,
772781 ) )
773782 . chain ( in_band_ty_params. into_iter ( ) )
774783 . collect ( ) ;
@@ -781,7 +790,7 @@ impl<'a> LoweringContext<'a> {
781790 & mut self ,
782791 span : Span ,
783792 hir_name : ParamName ,
784- parent_index : DefIndex ,
793+ parent_def_id : LocalDefId ,
785794 ) -> hir:: GenericParam {
786795 let node_id = self . sess . next_node_id ( ) ;
787796
@@ -805,7 +814,7 @@ impl<'a> LoweringContext<'a> {
805814
806815 // Add a definition for the in-band lifetime def.
807816 self . resolver . definitions ( ) . create_def_with_parent (
808- parent_index ,
817+ parent_def_id . index ,
809818 node_id,
810819 DefPathData :: LifetimeNs ( str_name) ,
811820 ExpnId :: root ( ) ,
@@ -890,7 +899,7 @@ impl<'a> LoweringContext<'a> {
890899 fn add_in_band_defs < F , T > (
891900 & mut self ,
892901 generics : & Generics ,
893- parent_id : DefId ,
902+ parent_def_id : LocalDefId ,
894903 anonymous_lifetime_mode : AnonymousLifetimeMode ,
895904 f : F ,
896905 ) -> ( hir:: Generics , T )
@@ -900,7 +909,7 @@ impl<'a> LoweringContext<'a> {
900909 let ( in_band_defs, ( mut lowered_generics, res) ) = self . with_in_scope_lifetime_defs (
901910 & generics. params ,
902911 |this| {
903- this. collect_in_band_defs ( parent_id , anonymous_lifetime_mode, |this| {
912+ this. collect_in_band_defs ( parent_def_id , anonymous_lifetime_mode, |this| {
904913 let mut params = Vec :: new ( ) ;
905914 // Note: it is necessary to lower generics *before* calling `f`.
906915 // When lowering `async fn`, there's a final step when lowering
@@ -1103,9 +1112,9 @@ impl<'a> LoweringContext<'a> {
11031112 // constructing the HIR for `impl bounds...` and then lowering that.
11041113
11051114 let impl_trait_node_id = self . sess . next_node_id ( ) ;
1106- let parent_def_index = self . current_hir_id_owner . last ( ) . unwrap ( ) . 0 ;
1115+ let parent_def_id = self . current_hir_id_owner . last ( ) . unwrap ( ) . 0 ;
11071116 self . resolver . definitions ( ) . create_def_with_parent (
1108- parent_def_index ,
1117+ parent_def_id . index ,
11091118 impl_trait_node_id,
11101119 DefPathData :: ImplTrait ,
11111120 ExpnId :: root ( ) ,
@@ -1288,11 +1297,11 @@ impl<'a> LoweringContext<'a> {
12881297 }
12891298 ImplTraitContext :: Universal ( in_band_ty_params) => {
12901299 // Add a definition for the in-band `Param`.
1291- let def_index = self
1300+ let def_id = self
12921301 . resolver
12931302 . definitions ( )
1294- . opt_def_index ( def_node_id)
1295- . unwrap ( ) ;
1303+ . local_def_id ( def_node_id)
1304+ . assert_local ( ) ;
12961305
12971306 let hir_bounds = self . lower_param_bounds (
12981307 bounds,
@@ -1317,7 +1326,7 @@ impl<'a> LoweringContext<'a> {
13171326 None ,
13181327 P ( hir:: Path {
13191328 span,
1320- res : Res :: Def ( DefKind :: TyParam , DefId :: local ( def_index ) ) ,
1329+ res : Res :: Def ( DefKind :: TyParam , def_id . to_def_id ( ) ) ,
13211330 segments : hir_vec ! [ hir:: PathSegment :: from_ident( ident) ] ,
13221331 } ) ,
13231332 ) )
@@ -1383,19 +1392,19 @@ impl<'a> LoweringContext<'a> {
13831392 None ,
13841393 ) ;
13851394
1386- let opaque_ty_def_index = self
1395+ let opaque_ty_def_id = self
13871396 . resolver
13881397 . definitions ( )
1389- . opt_def_index ( opaque_ty_node_id)
1390- . unwrap ( ) ;
1398+ . local_def_id ( opaque_ty_node_id)
1399+ . assert_local ( ) ;
13911400
13921401 self . allocate_hir_id_counter ( opaque_ty_node_id) ;
13931402
13941403 let hir_bounds = self . with_hir_id_owner ( opaque_ty_node_id, lower_bounds) ;
13951404
13961405 let ( lifetimes, lifetime_defs) = self . lifetimes_from_impl_trait_bounds (
13971406 opaque_ty_node_id,
1398- opaque_ty_def_index ,
1407+ opaque_ty_def_id ,
13991408 & hir_bounds,
14001409 ) ;
14011410
@@ -1422,7 +1431,7 @@ impl<'a> LoweringContext<'a> {
14221431 origin : hir:: OpaqueTyOrigin :: FnReturn ,
14231432 } ;
14241433
1425- trace ! ( "lower_opaque_impl_trait: {:#?}" , opaque_ty_def_index ) ;
1434+ trace ! ( "lower_opaque_impl_trait: {:#?}" , opaque_ty_def_id ) ;
14261435 let opaque_ty_id = lctx. generate_opaque_type (
14271436 opaque_ty_node_id,
14281437 opaque_ty_item,
@@ -1467,22 +1476,22 @@ impl<'a> LoweringContext<'a> {
14671476 fn lifetimes_from_impl_trait_bounds (
14681477 & mut self ,
14691478 opaque_ty_id : NodeId ,
1470- parent_index : DefIndex ,
1479+ parent_def_id : LocalDefId ,
14711480 bounds : & hir:: GenericBounds ,
14721481 ) -> ( HirVec < hir:: GenericArg > , HirVec < hir:: GenericParam > ) {
14731482 debug ! (
14741483 "lifetimes_from_impl_trait_bounds(opaque_ty_id={:?}, \
1475- parent_index ={:?}, \
1484+ parent_def_id ={:?}, \
14761485 bounds={:#?})",
1477- opaque_ty_id, parent_index , bounds,
1486+ opaque_ty_id, parent_def_id , bounds,
14781487 ) ;
14791488
14801489 // This visitor walks over `impl Trait` bounds and creates defs for all lifetimes that
14811490 // appear in the bounds, excluding lifetimes that are created within the bounds.
14821491 // E.g., `'a`, `'b`, but not `'c` in `impl for<'c> SomeTrait<'a, 'b, 'c>`.
14831492 struct ImplTraitLifetimeCollector < ' r , ' a > {
14841493 context : & ' r mut LoweringContext < ' a > ,
1485- parent : DefIndex ,
1494+ parent : LocalDefId ,
14861495 opaque_ty_id : NodeId ,
14871496 collect_elided_lifetimes : bool ,
14881497 currently_bound_lifetimes : Vec < hir:: LifetimeName > ,
@@ -1586,7 +1595,7 @@ impl<'a> LoweringContext<'a> {
15861595 let hir_id =
15871596 self . context . lower_node_id_with_owner ( def_node_id, self . opaque_ty_id ) ;
15881597 self . context . resolver . definitions ( ) . create_def_with_parent (
1589- self . parent ,
1598+ self . parent . index ,
15901599 def_node_id,
15911600 DefPathData :: LifetimeNs ( name. ident ( ) . name ) ,
15921601 ExpnId :: root ( ) ,
@@ -1619,7 +1628,7 @@ impl<'a> LoweringContext<'a> {
16191628
16201629 let mut lifetime_collector = ImplTraitLifetimeCollector {
16211630 context : self ,
1622- parent : parent_index ,
1631+ parent : parent_def_id ,
16231632 opaque_ty_id,
16241633 collect_elided_lifetimes : true ,
16251634 currently_bound_lifetimes : Vec :: new ( ) ,
@@ -2072,14 +2081,14 @@ impl<'a> LoweringContext<'a> {
20722081 visitor. visit_ty ( ty) ;
20732082 }
20742083 }
2075- let parent_def_id = DefId :: local ( self . current_hir_id_owner . last ( ) . unwrap ( ) . 0 ) ;
2084+ let parent_def_id = self . current_hir_id_owner . last ( ) . unwrap ( ) . 0 ;
20762085 ( hir:: Local {
20772086 hir_id : self . lower_node_id ( l. id ) ,
20782087 ty : l. ty
20792088 . as_ref ( )
20802089 . map ( |t| self . lower_ty ( t,
20812090 if self . sess . features_untracked ( ) . impl_trait_in_bindings {
2082- ImplTraitContext :: OpaqueTy ( Some ( parent_def_id) )
2091+ ImplTraitContext :: OpaqueTy ( Some ( parent_def_id. to_def_id ( ) ) )
20832092 } else {
20842093 ImplTraitContext :: Disallowed ( ImplTraitPosition :: Binding )
20852094 }
@@ -2252,11 +2261,11 @@ impl<'a> LoweringContext<'a> {
22522261 None ,
22532262 ) ;
22542263
2255- let opaque_ty_def_index = self
2264+ let opaque_ty_def_id = self
22562265 . resolver
22572266 . definitions ( )
2258- . opt_def_index ( opaque_ty_node_id)
2259- . unwrap ( ) ;
2267+ . local_def_id ( opaque_ty_node_id)
2268+ . assert_local ( ) ;
22602269
22612270 self . allocate_hir_id_counter ( opaque_ty_node_id) ;
22622271
@@ -2349,7 +2358,7 @@ impl<'a> LoweringContext<'a> {
23492358 lifetime_params
23502359 . iter ( ) . cloned ( )
23512360 . map ( |( span, hir_name) | {
2352- this. lifetime_to_generic_param ( span, hir_name, opaque_ty_def_index )
2361+ this. lifetime_to_generic_param ( span, hir_name, opaque_ty_def_id )
23532362 } )
23542363 . collect ( ) ;
23552364
@@ -2367,7 +2376,7 @@ impl<'a> LoweringContext<'a> {
23672376 origin : hir:: OpaqueTyOrigin :: AsyncFn ,
23682377 } ;
23692378
2370- trace ! ( "exist ty from async fn def index : {:#?}" , opaque_ty_def_index ) ;
2379+ trace ! ( "exist ty from async fn def id : {:#?}" , opaque_ty_def_id ) ;
23712380 let opaque_ty_id = this. generate_opaque_type (
23722381 opaque_ty_node_id,
23732382 opaque_ty_item,
0 commit comments