@@ -606,10 +606,7 @@ impl<'a, 'hir> LoweringContext<'a, 'hir> {
606606 }
607607
608608 fn insert_item ( & mut self , item : hir:: Item < ' hir > ) -> hir:: ItemId {
609- let id = item. hir_id ;
610- // FIXME: Use `debug_asset-rt`.
611- assert_eq ! ( id. local_id, hir:: ItemLocalId :: from_u32( 0 ) ) ;
612- let id = hir:: ItemId { id } ;
609+ let id = hir:: ItemId { def_id : item. def_id } ;
613610 self . items . insert ( id, item) ;
614611 self . modules . get_mut ( & self . current_module ) . unwrap ( ) . items . insert ( id) ;
615612 id
@@ -1549,29 +1546,27 @@ impl<'a, 'hir> LoweringContext<'a, 'hir> {
15491546 } ;
15501547
15511548 trace ! ( "lower_opaque_impl_trait: {:#?}" , opaque_ty_def_id) ;
1552- let opaque_ty_id =
1553- lctx. generate_opaque_type ( opaque_ty_node_id, opaque_ty_item, span, opaque_ty_span) ;
1549+ lctx. generate_opaque_type ( opaque_ty_def_id, opaque_ty_item, span, opaque_ty_span) ;
15541550
15551551 // `impl Trait` now just becomes `Foo<'a, 'b, ..>`.
1556- hir:: TyKind :: OpaqueDef ( hir:: ItemId { id : opaque_ty_id } , lifetimes)
1552+ hir:: TyKind :: OpaqueDef ( hir:: ItemId { def_id : opaque_ty_def_id } , lifetimes)
15571553 } )
15581554 }
15591555
15601556 /// Registers a new opaque type with the proper `NodeId`s and
15611557 /// returns the lowered node-ID for the opaque type.
15621558 fn generate_opaque_type (
15631559 & mut self ,
1564- opaque_ty_node_id : NodeId ,
1560+ opaque_ty_id : LocalDefId ,
15651561 opaque_ty_item : hir:: OpaqueTy < ' hir > ,
15661562 span : Span ,
15671563 opaque_ty_span : Span ,
1568- ) -> hir :: HirId {
1564+ ) {
15691565 let opaque_ty_item_kind = hir:: ItemKind :: OpaqueTy ( opaque_ty_item) ;
1570- let opaque_ty_id = self . lower_node_id ( opaque_ty_node_id) ;
15711566 // Generate an `type Foo = impl Trait;` declaration.
15721567 trace ! ( "registering opaque type with id {:#?}" , opaque_ty_id) ;
15731568 let opaque_ty_item = hir:: Item {
1574- hir_id : opaque_ty_id,
1569+ def_id : opaque_ty_id,
15751570 ident : Ident :: invalid ( ) ,
15761571 attrs : Default :: default ( ) ,
15771572 kind : opaque_ty_item_kind,
@@ -1583,7 +1578,6 @@ impl<'a, 'hir> LoweringContext<'a, 'hir> {
15831578 // automatically for all AST items. But this opaque type item
15841579 // does not actually exist in the AST.
15851580 self . insert_item ( opaque_ty_item) ;
1586- opaque_ty_id
15871581 }
15881582
15891583 fn lifetimes_from_impl_trait_bounds (
@@ -2012,7 +2006,7 @@ impl<'a, 'hir> LoweringContext<'a, 'hir> {
20122006 // grow.
20132007 let input_lifetimes_count = self . in_scope_lifetimes . len ( ) + self . lifetimes_to_define . len ( ) ;
20142008
2015- let ( opaque_ty_id , lifetime_params) = self . with_hir_id_owner ( opaque_ty_node_id, |this| {
2009+ let lifetime_params = self . with_hir_id_owner ( opaque_ty_node_id, |this| {
20162010 // We have to be careful to get elision right here. The
20172011 // idea is that we create a lifetime parameter for each
20182012 // lifetime in the return type. So, given a return type
@@ -2063,10 +2057,9 @@ impl<'a, 'hir> LoweringContext<'a, 'hir> {
20632057 } ;
20642058
20652059 trace ! ( "exist ty from async fn def id: {:#?}" , opaque_ty_def_id) ;
2066- let opaque_ty_id =
2067- this. generate_opaque_type ( opaque_ty_node_id, opaque_ty_item, span, opaque_ty_span) ;
2060+ this. generate_opaque_type ( opaque_ty_def_id, opaque_ty_item, span, opaque_ty_span) ;
20682061
2069- ( opaque_ty_id , lifetime_params)
2062+ lifetime_params
20702063 } ) ;
20712064
20722065 // As documented above on the variable
@@ -2109,7 +2102,8 @@ impl<'a, 'hir> LoweringContext<'a, 'hir> {
21092102 // Foo = impl Trait` is, internally, created as a child of the
21102103 // async fn, so the *type parameters* are inherited. It's
21112104 // only the lifetime parameters that we must supply.
2112- let opaque_ty_ref = hir:: TyKind :: OpaqueDef ( hir:: ItemId { id : opaque_ty_id } , generic_args) ;
2105+ let opaque_ty_ref =
2106+ hir:: TyKind :: OpaqueDef ( hir:: ItemId { def_id : opaque_ty_def_id } , generic_args) ;
21132107 let opaque_ty = self . ty ( opaque_ty_span, opaque_ty_ref) ;
21142108 hir:: FnRetTy :: Return ( self . arena . alloc ( opaque_ty) )
21152109 }
@@ -2434,7 +2428,10 @@ impl<'a, 'hir> LoweringContext<'a, 'hir> {
24342428 let mut ids: SmallVec < [ hir:: Stmt < ' hir > ; 1 ] > = item_ids
24352429 . into_iter ( )
24362430 . map ( |item_id| {
2437- let item_id = hir:: ItemId { id : self . lower_node_id ( item_id) } ;
2431+ let item_id = hir:: ItemId {
2432+ // All the items that `lower_local` finds are `impl Trait` types.
2433+ def_id : self . lower_node_id ( item_id) . expect_owner ( ) ,
2434+ } ;
24382435 self . stmt ( s. span , hir:: StmtKind :: Item ( item_id) )
24392436 } )
24402437 . collect ( ) ;
0 commit comments