@@ -1293,15 +1293,39 @@ impl<'a, 'hir> LoweringContext<'a, 'hir> {
1293
1293
TyKind :: Err => {
1294
1294
hir:: TyKind :: Err ( self . tcx . sess . delay_span_bug ( t. span , "TyKind::Err lowered" ) )
1295
1295
}
1296
- TyKind :: AnonStruct ( fields) => {
1297
- hir:: TyKind :: AnonStruct (
1298
- self . arena . alloc_from_iter ( fields. iter ( ) . enumerate ( ) . map ( |f| self . lower_field_def ( f) ) ) ,
1299
- )
1300
- }
1301
- TyKind :: AnonUnion ( fields) => {
1302
- hir:: TyKind :: AnonUnion (
1303
- self . arena . alloc_from_iter ( fields. iter ( ) . enumerate ( ) . map ( |f| self . lower_field_def ( f) ) ) ,
1304
- )
1296
+ TyKind :: AnonStruct ( def_node_id, fields) | TyKind :: AnonUnion ( def_node_id, fields) => {
1297
+ let def_path_data = match & t. kind {
1298
+ TyKind :: AnonStruct ( ..) => DefPathData :: AnonStruct ,
1299
+ _ => DefPathData :: AnonUnion ,
1300
+ } ;
1301
+ let def_id = self . create_def (
1302
+ self . current_hir_id_owner . def_id ,
1303
+ * def_node_id,
1304
+ def_path_data,
1305
+ t. span ,
1306
+ ) ;
1307
+ debug ! ( ?def_id) ;
1308
+ let owner_id = hir:: OwnerId { def_id } ;
1309
+ self . with_hir_id_owner ( * def_node_id, |this| {
1310
+ let fields = this. arena . alloc_from_iter (
1311
+ fields. iter ( ) . enumerate ( ) . map ( |f| this. lower_field_def ( f) ) ,
1312
+ ) ;
1313
+ let span = t. span ;
1314
+ let variant_data = hir:: VariantData :: Struct ( fields, false ) ;
1315
+ let generics = hir:: Generics :: empty ( ) ;
1316
+ let kind = match & t. kind {
1317
+ TyKind :: AnonStruct ( ..) => hir:: ItemKind :: Struct ( variant_data, generics) ,
1318
+ _ => hir:: ItemKind :: Union ( variant_data, generics) ,
1319
+ } ;
1320
+ hir:: OwnerNode :: Item ( this. arena . alloc ( hir:: Item {
1321
+ ident : Ident :: empty ( ) ,
1322
+ owner_id,
1323
+ kind,
1324
+ span : this. lower_span ( span) ,
1325
+ vis_span : this. lower_span ( span. shrink_to_lo ( ) ) ,
1326
+ } ) )
1327
+ } ) ;
1328
+ hir:: TyKind :: AnonAdt ( hir:: ItemId { owner_id } )
1305
1329
}
1306
1330
TyKind :: Slice ( ty) => hir:: TyKind :: Slice ( self . lower_ty ( ty, itctx) ) ,
1307
1331
TyKind :: Ptr ( mt) => hir:: TyKind :: Ptr ( self . lower_mt ( mt, itctx) ) ,
0 commit comments