@@ -1333,7 +1333,7 @@ impl EnumMemberDescriptionFactory<'ll, 'tcx> {
13331333 name: if fallback {
13341334 String :: new( )
13351335 } else {
1336- variant_info. name_as_string ( )
1336+ variant_info. variant_name ( )
13371337 } ,
13381338 type_metadata: variant_type_metadata,
13391339 offset: Size :: ZERO ,
@@ -1388,7 +1388,7 @@ impl EnumMemberDescriptionFactory<'ll, 'tcx> {
13881388 name : if fallback {
13891389 String :: new ( )
13901390 } else {
1391- variant_info. name_as_string ( )
1391+ variant_info. variant_name ( )
13921392 } ,
13931393 type_metadata : variant_type_metadata,
13941394 offset : Size :: ZERO ,
@@ -1455,7 +1455,7 @@ impl EnumMemberDescriptionFactory<'ll, 'tcx> {
14551455 self . layout ,
14561456 self . layout . fields . offset ( discr_index) ,
14571457 self . layout . field ( cx, discr_index) . size ) ;
1458- variant_info_for ( * niche_variants. start ( ) ) . map_name ( |variant_name| {
1458+ variant_info_for ( * niche_variants. start ( ) ) . map_struct_name ( |variant_name| {
14591459 name. push_str ( variant_name) ;
14601460 } ) ;
14611461
@@ -1506,7 +1506,7 @@ impl EnumMemberDescriptionFactory<'ll, 'tcx> {
15061506 } ;
15071507
15081508 MemberDescription {
1509- name : variant_info. name_as_string ( ) ,
1509+ name : variant_info. variant_name ( ) ,
15101510 type_metadata : variant_type_metadata,
15111511 offset : Size :: ZERO ,
15121512 size : self . layout . size ,
@@ -1571,16 +1571,25 @@ enum VariantInfo<'tcx> {
15711571}
15721572
15731573impl < ' tcx > VariantInfo < ' tcx > {
1574- fn map_name < R > ( & self , f : impl FnOnce ( & str ) -> R ) -> R {
1574+ fn map_struct_name < R > ( & self , f : impl FnOnce ( & str ) -> R ) -> R {
15751575 match self {
15761576 VariantInfo :: Adt ( variant) => f ( & variant. ident . as_str ( ) ) ,
15771577 VariantInfo :: Generator ( substs, variant_index) =>
15781578 substs. map_variant_name ( * variant_index, f) ,
15791579 }
15801580 }
15811581
1582- fn name_as_string ( & self ) -> String {
1583- self . map_name ( |name| name. to_string ( ) )
1582+ fn variant_name ( & self ) -> String {
1583+ match self {
1584+ VariantInfo :: Adt ( variant) => variant. ident . to_string ( ) ,
1585+ VariantInfo :: Generator ( _, variant_index) => {
1586+ // Since GDB currently prints out the raw discriminant along
1587+ // with every variant, make each variant name be just the value
1588+ // of the discriminant. The struct name for the variant includes
1589+ // the actual variant description.
1590+ format ! ( "{}" , variant_index. as_usize( ) ) . to_string ( )
1591+ }
1592+ }
15841593 }
15851594
15861595 fn field_name ( & self , i : usize ) -> String {
@@ -1604,7 +1613,7 @@ fn describe_enum_variant(
16041613 containing_scope : & ' ll DIScope ,
16051614 span : Span ,
16061615) -> ( & ' ll DICompositeType , MemberDescriptionFactory < ' ll , ' tcx > ) {
1607- let metadata_stub = variant. map_name ( |variant_name| {
1616+ let metadata_stub = variant. map_struct_name ( |variant_name| {
16081617 let unique_type_id = debug_context ( cx) . type_map
16091618 . borrow_mut ( )
16101619 . get_unique_type_id_of_enum_variant (
0 commit comments