@@ -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
@@ -1109,9 +1118,9 @@ impl<'a> LoweringContext<'a> {
11091118 // constructing the HIR for `impl bounds...` and then lowering that.
11101119
11111120 let impl_trait_node_id = self . sess . next_node_id ( ) ;
1112- let parent_def_index = self . current_hir_id_owner . last ( ) . unwrap ( ) . 0 ;
1121+ let parent_def_id = self . current_hir_id_owner . last ( ) . unwrap ( ) . 0 ;
11131122 self . resolver . definitions ( ) . create_def_with_parent (
1114- parent_def_index ,
1123+ parent_def_id . index ,
11151124 impl_trait_node_id,
11161125 DefPathData :: ImplTrait ,
11171126 ExpnId :: root ( ) ,
@@ -1294,11 +1303,11 @@ impl<'a> LoweringContext<'a> {
12941303 }
12951304 ImplTraitContext :: Universal ( in_band_ty_params) => {
12961305 // Add a definition for the in-band `Param`.
1297- let def_index = self
1306+ let def_id = self
12981307 . resolver
12991308 . definitions ( )
1300- . opt_def_index ( def_node_id)
1301- . unwrap ( ) ;
1309+ . local_def_id ( def_node_id)
1310+ . assert_local ( ) ;
13021311
13031312 let hir_bounds = self . lower_param_bounds (
13041313 bounds,
@@ -1323,7 +1332,7 @@ impl<'a> LoweringContext<'a> {
13231332 None ,
13241333 P ( hir:: Path {
13251334 span,
1326- res : Res :: Def ( DefKind :: TyParam , DefId :: local ( def_index ) ) ,
1335+ res : Res :: Def ( DefKind :: TyParam , def_id . to_def_id ( ) ) ,
13271336 segments : hir_vec ! [ hir:: PathSegment :: from_ident( ident) ] ,
13281337 } ) ,
13291338 ) )
@@ -1389,19 +1398,19 @@ impl<'a> LoweringContext<'a> {
13891398 None ,
13901399 ) ;
13911400
1392- let opaque_ty_def_index = self
1401+ let opaque_ty_def_id = self
13931402 . resolver
13941403 . definitions ( )
1395- . opt_def_index ( opaque_ty_node_id)
1396- . unwrap ( ) ;
1404+ . local_def_id ( opaque_ty_node_id)
1405+ . assert_local ( ) ;
13971406
13981407 self . allocate_hir_id_counter ( opaque_ty_node_id) ;
13991408
14001409 let hir_bounds = self . with_hir_id_owner ( opaque_ty_node_id, lower_bounds) ;
14011410
14021411 let ( lifetimes, lifetime_defs) = self . lifetimes_from_impl_trait_bounds (
14031412 opaque_ty_node_id,
1404- opaque_ty_def_index ,
1413+ opaque_ty_def_id ,
14051414 & hir_bounds,
14061415 ) ;
14071416
@@ -1428,7 +1437,7 @@ impl<'a> LoweringContext<'a> {
14281437 origin : hir:: OpaqueTyOrigin :: FnReturn ,
14291438 } ;
14301439
1431- trace ! ( "lower_opaque_impl_trait: {:#?}" , opaque_ty_def_index ) ;
1440+ trace ! ( "lower_opaque_impl_trait: {:#?}" , opaque_ty_def_id ) ;
14321441 let opaque_ty_id = lctx. generate_opaque_type (
14331442 opaque_ty_node_id,
14341443 opaque_ty_item,
@@ -1473,22 +1482,22 @@ impl<'a> LoweringContext<'a> {
14731482 fn lifetimes_from_impl_trait_bounds (
14741483 & mut self ,
14751484 opaque_ty_id : NodeId ,
1476- parent_index : DefIndex ,
1485+ parent_def_id : LocalDefId ,
14771486 bounds : & hir:: GenericBounds ,
14781487 ) -> ( HirVec < hir:: GenericArg > , HirVec < hir:: GenericParam > ) {
14791488 debug ! (
14801489 "lifetimes_from_impl_trait_bounds(opaque_ty_id={:?}, \
1481- parent_index ={:?}, \
1490+ parent_def_id ={:?}, \
14821491 bounds={:#?})",
1483- opaque_ty_id, parent_index , bounds,
1492+ opaque_ty_id, parent_def_id , bounds,
14841493 ) ;
14851494
14861495 // This visitor walks over `impl Trait` bounds and creates defs for all lifetimes that
14871496 // appear in the bounds, excluding lifetimes that are created within the bounds.
14881497 // E.g., `'a`, `'b`, but not `'c` in `impl for<'c> SomeTrait<'a, 'b, 'c>`.
14891498 struct ImplTraitLifetimeCollector < ' r , ' a > {
14901499 context : & ' r mut LoweringContext < ' a > ,
1491- parent : DefIndex ,
1500+ parent : LocalDefId ,
14921501 opaque_ty_id : NodeId ,
14931502 collect_elided_lifetimes : bool ,
14941503 currently_bound_lifetimes : Vec < hir:: LifetimeName > ,
@@ -1592,7 +1601,7 @@ impl<'a> LoweringContext<'a> {
15921601 let hir_id =
15931602 self . context . lower_node_id_with_owner ( def_node_id, self . opaque_ty_id ) ;
15941603 self . context . resolver . definitions ( ) . create_def_with_parent (
1595- self . parent ,
1604+ self . parent . index ,
15961605 def_node_id,
15971606 DefPathData :: LifetimeNs ( name. ident ( ) . name ) ,
15981607 ExpnId :: root ( ) ,
@@ -1625,7 +1634,7 @@ impl<'a> LoweringContext<'a> {
16251634
16261635 let mut lifetime_collector = ImplTraitLifetimeCollector {
16271636 context : self ,
1628- parent : parent_index ,
1637+ parent : parent_def_id ,
16291638 opaque_ty_id,
16301639 collect_elided_lifetimes : true ,
16311640 currently_bound_lifetimes : Vec :: new ( ) ,
@@ -2078,14 +2087,14 @@ impl<'a> LoweringContext<'a> {
20782087 visitor. visit_ty ( ty) ;
20792088 }
20802089 }
2081- let parent_def_id = DefId :: local ( self . current_hir_id_owner . last ( ) . unwrap ( ) . 0 ) ;
2090+ let parent_def_id = self . current_hir_id_owner . last ( ) . unwrap ( ) . 0 ;
20822091 ( hir:: Local {
20832092 hir_id : self . lower_node_id ( l. id ) ,
20842093 ty : l. ty
20852094 . as_ref ( )
20862095 . map ( |t| self . lower_ty ( t,
20872096 if self . sess . features_untracked ( ) . impl_trait_in_bindings {
2088- ImplTraitContext :: OpaqueTy ( Some ( parent_def_id) )
2097+ ImplTraitContext :: OpaqueTy ( Some ( parent_def_id. to_def_id ( ) ) )
20892098 } else {
20902099 ImplTraitContext :: Disallowed ( ImplTraitPosition :: Binding )
20912100 }
@@ -2258,11 +2267,11 @@ impl<'a> LoweringContext<'a> {
22582267 None ,
22592268 ) ;
22602269
2261- let opaque_ty_def_index = self
2270+ let opaque_ty_def_id = self
22622271 . resolver
22632272 . definitions ( )
2264- . opt_def_index ( opaque_ty_node_id)
2265- . unwrap ( ) ;
2273+ . local_def_id ( opaque_ty_node_id)
2274+ . assert_local ( ) ;
22662275
22672276 self . allocate_hir_id_counter ( opaque_ty_node_id) ;
22682277
@@ -2355,7 +2364,7 @@ impl<'a> LoweringContext<'a> {
23552364 lifetime_params
23562365 . iter ( ) . cloned ( )
23572366 . map ( |( span, hir_name) | {
2358- this. lifetime_to_generic_param ( span, hir_name, opaque_ty_def_index )
2367+ this. lifetime_to_generic_param ( span, hir_name, opaque_ty_def_id )
23592368 } )
23602369 . collect ( ) ;
23612370
@@ -2373,7 +2382,7 @@ impl<'a> LoweringContext<'a> {
23732382 origin : hir:: OpaqueTyOrigin :: AsyncFn ,
23742383 } ;
23752384
2376- trace ! ( "exist ty from async fn def index : {:#?}" , opaque_ty_def_index ) ;
2385+ trace ! ( "exist ty from async fn def id : {:#?}" , opaque_ty_def_id ) ;
23772386 let opaque_ty_id = this. generate_opaque_type (
23782387 opaque_ty_node_id,
23792388 opaque_ty_item,
0 commit comments