@@ -1333,7 +1333,7 @@ impl EnumMemberDescriptionFactory<'ll, 'tcx> {
1333
1333
name: if fallback {
1334
1334
String :: new( )
1335
1335
} else {
1336
- variant_info. name_as_string ( )
1336
+ variant_info. variant_name ( )
1337
1337
} ,
1338
1338
type_metadata: variant_type_metadata,
1339
1339
offset: Size :: ZERO ,
@@ -1388,7 +1388,7 @@ impl EnumMemberDescriptionFactory<'ll, 'tcx> {
1388
1388
name : if fallback {
1389
1389
String :: new ( )
1390
1390
} else {
1391
- variant_info. name_as_string ( )
1391
+ variant_info. variant_name ( )
1392
1392
} ,
1393
1393
type_metadata : variant_type_metadata,
1394
1394
offset : Size :: ZERO ,
@@ -1455,7 +1455,7 @@ impl EnumMemberDescriptionFactory<'ll, 'tcx> {
1455
1455
self . layout ,
1456
1456
self . layout . fields . offset ( discr_index) ,
1457
1457
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| {
1459
1459
name. push_str ( variant_name) ;
1460
1460
} ) ;
1461
1461
@@ -1506,7 +1506,7 @@ impl EnumMemberDescriptionFactory<'ll, 'tcx> {
1506
1506
} ;
1507
1507
1508
1508
MemberDescription {
1509
- name : variant_info. name_as_string ( ) ,
1509
+ name : variant_info. variant_name ( ) ,
1510
1510
type_metadata : variant_type_metadata,
1511
1511
offset : Size :: ZERO ,
1512
1512
size : self . layout . size ,
@@ -1571,16 +1571,25 @@ enum VariantInfo<'tcx> {
1571
1571
}
1572
1572
1573
1573
impl < ' 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 {
1575
1575
match self {
1576
1576
VariantInfo :: Adt ( variant) => f ( & variant. ident . as_str ( ) ) ,
1577
1577
VariantInfo :: Generator ( substs, variant_index) =>
1578
1578
substs. map_variant_name ( * variant_index, f) ,
1579
1579
}
1580
1580
}
1581
1581
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
+ }
1584
1593
}
1585
1594
1586
1595
fn field_name ( & self , i : usize ) -> String {
@@ -1604,7 +1613,7 @@ fn describe_enum_variant(
1604
1613
containing_scope : & ' ll DIScope ,
1605
1614
span : Span ,
1606
1615
) -> ( & ' ll DICompositeType , MemberDescriptionFactory < ' ll , ' tcx > ) {
1607
- let metadata_stub = variant. map_name ( |variant_name| {
1616
+ let metadata_stub = variant. map_struct_name ( |variant_name| {
1608
1617
let unique_type_id = debug_context ( cx) . type_map
1609
1618
. borrow_mut ( )
1610
1619
. get_unique_type_id_of_enum_variant (
0 commit comments