Skip to content

Commit ef053fd

Browse files
committed
Change the type name from _enum<..> to enum$<..>
This makes the type name inline with the proposed standard in #85269.
1 parent d2d6fa8 commit ef053fd

File tree

5 files changed

+44
-44
lines changed

5 files changed

+44
-44
lines changed

compiler/rustc_codegen_llvm/src/debuginfo/metadata.rs

+3-3
Original file line numberDiff line numberDiff line change
@@ -1537,7 +1537,7 @@ impl EnumMemberDescriptionFactory<'ll, 'tcx> {
15371537
// For MSVC, we generate a union of structs for each variant with an explicit
15381538
// discriminant field roughly equivalent to the following C:
15391539
// ```c
1540-
// union _enum<{name}> {
1540+
// union enum$<{name}> {
15411541
// struct {variant 0 name} {
15421542
// tag$ variant$;
15431543
// <variant 0 fields>
@@ -1628,7 +1628,7 @@ impl EnumMemberDescriptionFactory<'ll, 'tcx> {
16281628
// make the discriminant field that type. We then use natvis to render the enum type correctly in Windbg/VS.
16291629
// This will generate debuginfo roughly equivalent to the following C:
16301630
// ```c
1631-
// union _enum<{name}, {min niche}, {max niche}, {dataful variant name} {
1631+
// union enum$<{name}, {min niche}, {max niche}, {dataful variant name} {
16321632
// struct dataful_variant {
16331633
// <fields in dataful variant>
16341634
// },
@@ -1639,7 +1639,7 @@ impl EnumMemberDescriptionFactory<'ll, 'tcx> {
16391639
// }
16401640
// }
16411641
// ```
1642-
// The natvis in `intrinsic.natvis` matches on the type name `_enum<*, *, *, *>`
1642+
// The natvis in `intrinsic.natvis` matches on the type name `enum$<*, *, *, *>`
16431643
// and evaluates `this.discriminant$.discriminant`. If the value is between
16441644
// the min niche and max niche, then the enum is in the dataful variant and
16451645
// `this.dataful_variant` is rendered. Otherwise, the enum is in one of the

compiler/rustc_codegen_ssa/src/debuginfo/type_names.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -267,15 +267,15 @@ pub fn push_debuginfo_type_name<'tcx>(
267267
let max = dataful_discriminant_range.end();
268268
let max = tag.value.size(&tcx).truncate(*max);
269269

270-
output.push_str("_enum<");
270+
output.push_str("enum$<");
271271
push_item_name(tcx, def.did, true, output);
272272
push_type_params(tcx, substs, output, visited);
273273

274274
let dataful_variant_name = def.variants[*dataful_variant].ident.as_str();
275275

276276
output.push_str(&format!(", {}, {}, {}>", min, max, dataful_variant_name));
277277
} else {
278-
output.push_str("_enum<");
278+
output.push_str("enum$<");
279279
push_item_name(tcx, def.did, true, output);
280280
push_type_params(tcx, substs, output, visited);
281281
output.push('>');

src/etc/natvis/intrinsic.natvis

+2-2
Original file line numberDiff line numberDiff line change
@@ -149,7 +149,7 @@
149149
<Synthetic Name="[...]"><DisplayString>...</DisplayString></Synthetic>
150150
</Expand>
151151
</Type>
152-
<Type Name="_enum&lt;*&gt;">
152+
<Type Name="enum$&lt;*&gt;">
153153
<Intrinsic Name="tag" Expression="Variant0.variant$" />
154154
<DisplayString Condition="tag() == 0">{tag(),en}</DisplayString>
155155
<DisplayString Condition="tag() == 1" Optional="true">{tag(),en}</DisplayString>
@@ -189,7 +189,7 @@
189189
</Type>
190190

191191
<!-- $T1 is the name of the enum, $T2 is the low value of the dataful variant tag, $T3 is the high value of the dataful variant tag, $T4 is the name of the dataful variant -->
192-
<Type Name="_enum&lt;*, *, *, *&gt;">
192+
<Type Name="enum$&lt;*, *, *, *&gt;">
193193
<Intrinsic Name="tag" Expression="discriminant$.discriminant" />
194194
<Intrinsic Name="is_dataful" Expression="tag() &gt;= $T2 &amp;&amp; tag() &lt;= $T3" />
195195
<DisplayString Condition="is_dataful()">{"$T4",sb}({dataful_variant})</DisplayString>

src/test/debuginfo/msvc-pretty-enums.rs

+34-34
Original file line numberDiff line numberDiff line change
@@ -8,72 +8,72 @@
88
// so the best we can do is to make sure we are generating the right debuginfo
99

1010
// cdb-command: dx -r2 a,!
11-
// cdb-check:a,! [Type: _enum<core::option::Option<_enum<msvc_pretty_enums::CStyleEnum>>, 2, 16, Some>]
12-
// cdb-check: [+0x000] dataful_variant [Type: _enum<core::option::Option<_enum<msvc_pretty_enums::CStyleEnum>>, 2, 16, Some>::Some]
11+
// cdb-check:a,! [Type: enum$<core::option::Option<enum$<msvc_pretty_enums::CStyleEnum>>, 2, 16, Some>]
12+
// cdb-check: [+0x000] dataful_variant [Type: enum$<core::option::Option<enum$<msvc_pretty_enums::CStyleEnum>>, 2, 16, Some>::Some]
1313
// cdb-check: [+0x000] __0 : Low (0x2) [Type: msvc_pretty_enums::CStyleEnum]
14-
// cdb-check: [+0x000] discriminant$ [Type: _enum<core::option::Option<_enum<msvc_pretty_enums::CStyleEnum>>, 2, 16, Some>::discriminant$]
15-
// cdb-check: [+0x000] discriminant : 0x2 [Type: _enum<core::option::Option<_enum<msvc_pretty_enums::CStyleEnum>>, 2, 16, Some>::tag$]
14+
// cdb-check: [+0x000] discriminant$ [Type: enum$<core::option::Option<enum$<msvc_pretty_enums::CStyleEnum>>, 2, 16, Some>::discriminant$]
15+
// cdb-check: [+0x000] discriminant : 0x2 [Type: enum$<core::option::Option<enum$<msvc_pretty_enums::CStyleEnum>>, 2, 16, Some>::tag$]
1616

1717
// cdb-command: dx -r2 b,!
18-
// cdb-check:b,! [Type: _enum<core::option::Option<_enum<msvc_pretty_enums::CStyleEnum>>, 2, 16, Some>]
19-
// cdb-check: [+0x000] dataful_variant [Type: _enum<core::option::Option<_enum<msvc_pretty_enums::CStyleEnum>>, 2, 16, Some>::Some]
18+
// cdb-check:b,! [Type: enum$<core::option::Option<enum$<msvc_pretty_enums::CStyleEnum>>, 2, 16, Some>]
19+
// cdb-check: [+0x000] dataful_variant [Type: enum$<core::option::Option<enum$<msvc_pretty_enums::CStyleEnum>>, 2, 16, Some>::Some]
2020
// cdb-check: [+0x000] __0 : 0x11 [Type: msvc_pretty_enums::CStyleEnum]
21-
// cdb-check: [+0x000] discriminant$ [Type: _enum<core::option::Option<_enum<msvc_pretty_enums::CStyleEnum>>, 2, 16, Some>::discriminant$]
22-
// cdb-check: [+0x000] discriminant : None (0x11) [Type: _enum<core::option::Option<_enum<msvc_pretty_enums::CStyleEnum>>, 2, 16, Some>::tag$]
21+
// cdb-check: [+0x000] discriminant$ [Type: enum$<core::option::Option<enum$<msvc_pretty_enums::CStyleEnum>>, 2, 16, Some>::discriminant$]
22+
// cdb-check: [+0x000] discriminant : None (0x11) [Type: enum$<core::option::Option<enum$<msvc_pretty_enums::CStyleEnum>>, 2, 16, Some>::tag$]
2323

2424
// cdb-command: dx -r2 c,!
25-
// cdb-check:c,! [Type: _enum<msvc_pretty_enums::NicheLayoutEnum, 2, 16, Data>]
26-
// cdb-check: [+0x000] dataful_variant [Type: _enum<msvc_pretty_enums::NicheLayoutEnum, 2, 16, Data>::Data]
25+
// cdb-check:c,! [Type: enum$<msvc_pretty_enums::NicheLayoutEnum, 2, 16, Data>]
26+
// cdb-check: [+0x000] dataful_variant [Type: enum$<msvc_pretty_enums::NicheLayoutEnum, 2, 16, Data>::Data]
2727
// cdb-check: [+0x000] my_data : 0x11 [Type: msvc_pretty_enums::CStyleEnum]
28-
// cdb-check: [+0x000] discriminant$ [Type: _enum<msvc_pretty_enums::NicheLayoutEnum, 2, 16, Data>::discriminant$]
29-
// cdb-check: [+0x000] discriminant : Tag1 (0x11) [Type: _enum<msvc_pretty_enums::NicheLayoutEnum, 2, 16, Data>::tag$]
28+
// cdb-check: [+0x000] discriminant$ [Type: enum$<msvc_pretty_enums::NicheLayoutEnum, 2, 16, Data>::discriminant$]
29+
// cdb-check: [+0x000] discriminant : Tag1 (0x11) [Type: enum$<msvc_pretty_enums::NicheLayoutEnum, 2, 16, Data>::tag$]
3030

3131
// cdb-command: dx -r2 d,!
32-
// cdb-check:d,! [Type: _enum<msvc_pretty_enums::NicheLayoutEnum, 2, 16, Data>]
33-
// cdb-check: [+0x000] dataful_variant [Type: _enum<msvc_pretty_enums::NicheLayoutEnum, 2, 16, Data>::Data]
32+
// cdb-check:d,! [Type: enum$<msvc_pretty_enums::NicheLayoutEnum, 2, 16, Data>]
33+
// cdb-check: [+0x000] dataful_variant [Type: enum$<msvc_pretty_enums::NicheLayoutEnum, 2, 16, Data>::Data]
3434
// cdb-check: [+0x000] my_data : High (0x10) [Type: msvc_pretty_enums::CStyleEnum]
35-
// cdb-check: [+0x000] discriminant$ [Type: _enum<msvc_pretty_enums::NicheLayoutEnum, 2, 16, Data>::discriminant$]
36-
// cdb-check: [+0x000] discriminant : 0x10 [Type: _enum<msvc_pretty_enums::NicheLayoutEnum, 2, 16, Data>::tag$]
35+
// cdb-check: [+0x000] discriminant$ [Type: enum$<msvc_pretty_enums::NicheLayoutEnum, 2, 16, Data>::discriminant$]
36+
// cdb-check: [+0x000] discriminant : 0x10 [Type: enum$<msvc_pretty_enums::NicheLayoutEnum, 2, 16, Data>::tag$]
3737

3838
// cdb-command: dx -r2 e,!
39-
// cdb-check:e,! [Type: _enum<msvc_pretty_enums::NicheLayoutEnum, 2, 16, Data>]
40-
// cdb-check: [+0x000] dataful_variant [Type: _enum<msvc_pretty_enums::NicheLayoutEnum, 2, 16, Data>::Data]
39+
// cdb-check:e,! [Type: enum$<msvc_pretty_enums::NicheLayoutEnum, 2, 16, Data>]
40+
// cdb-check: [+0x000] dataful_variant [Type: enum$<msvc_pretty_enums::NicheLayoutEnum, 2, 16, Data>::Data]
4141
// cdb-check: [+0x000] my_data : 0x13 [Type: msvc_pretty_enums::CStyleEnum]
42-
// cdb-check: [+0x000] discriminant$ [Type: _enum<msvc_pretty_enums::NicheLayoutEnum, 2, 16, Data>::discriminant$]
43-
// cdb-check: [+0x000] discriminant : Tag2 (0x13) [Type: _enum<msvc_pretty_enums::NicheLayoutEnum, 2, 16, Data>::tag$]
42+
// cdb-check: [+0x000] discriminant$ [Type: enum$<msvc_pretty_enums::NicheLayoutEnum, 2, 16, Data>::discriminant$]
43+
// cdb-check: [+0x000] discriminant : Tag2 (0x13) [Type: enum$<msvc_pretty_enums::NicheLayoutEnum, 2, 16, Data>::tag$]
4444

4545
// cdb-command: dx -r2 f,!
46-
// cdb-check:f,! [Type: _enum<core::option::Option<u32*>, 1, [...], Some>]
47-
// cdb-check: [+0x000] dataful_variant [Type: _enum<core::option::Option<u32*>, 1, [...], Some>::Some]
46+
// cdb-check:f,! [Type: enum$<core::option::Option<u32*>, 1, [...], Some>]
47+
// cdb-check: [+0x000] dataful_variant [Type: enum$<core::option::Option<u32*>, 1, [...], Some>::Some]
4848
// cdb-check: [+0x000] __0 : 0x[...] : 0x1 [Type: unsigned int *]
49-
// cdb-check: [+0x000] discriminant$ [Type: _enum<core::option::Option<u32*>, 1, [...], Some>::discriminant$]
50-
// cdb-check: [+0x000] discriminant : 0x[...] [Type: _enum<core::option::Option<u32*>, 1, [...], Some>::tag$]
49+
// cdb-check: [+0x000] discriminant$ [Type: enum$<core::option::Option<u32*>, 1, [...], Some>::discriminant$]
50+
// cdb-check: [+0x000] discriminant : 0x[...] [Type: enum$<core::option::Option<u32*>, 1, [...], Some>::tag$]
5151

5252
// cdb-command: dx -r2 g,!
53-
// cdb-check:g,! [Type: _enum<core::option::Option<u32*>, 1, [...], Some>]
54-
// cdb-check: [+0x000] dataful_variant [Type: _enum<core::option::Option<u32*>, 1, [...], Some>::Some]
53+
// cdb-check:g,! [Type: enum$<core::option::Option<u32*>, 1, [...], Some>]
54+
// cdb-check: [+0x000] dataful_variant [Type: enum$<core::option::Option<u32*>, 1, [...], Some>::Some]
5555
// cdb-check: [+0x000] __0 : 0x0 [Type: unsigned int *]
56-
// cdb-check: [+0x000] discriminant$ [Type: _enum<core::option::Option<u32*>, 1, [...], Some>::discriminant$]
57-
// cdb-check: [+0x000] discriminant : None (0x0) [Type: _enum<core::option::Option<u32*>, 1, [...], Some>::tag$]
56+
// cdb-check: [+0x000] discriminant$ [Type: enum$<core::option::Option<u32*>, 1, [...], Some>::discriminant$]
57+
// cdb-check: [+0x000] discriminant : None (0x0) [Type: enum$<core::option::Option<u32*>, 1, [...], Some>::tag$]
5858

5959
// cdb-command: dx h
60-
// cdb-check:h : Some [Type: _enum<core::option::Option<u32>>]
60+
// cdb-check:h : Some [Type: enum$<core::option::Option<u32>>]
6161
// cdb-check: [+0x000] variant$ : Some (0x1) [Type: core::option::Option]
6262
// cdb-check: [+0x004] __0 : 0xc [Type: unsigned int]
6363

6464
// cdb-command: dx i
65-
// cdb-check:i : None [Type: _enum<core::option::Option<u32>>]
65+
// cdb-check:i : None [Type: enum$<core::option::Option<u32>>]
6666
// cdb-check: [+0x000] variant$ : None (0x0) [Type: core::option::Option]
6767

6868
// cdb-command: dx j
6969
// cdb-check:j : High (0x10) [Type: msvc_pretty_enums::CStyleEnum]
7070

7171
// cdb-command: dx -r2 k,!
72-
// cdb-check:k,! [Type: _enum<core::option::Option<alloc::string::String>, 1, [...], Some>]
73-
// cdb-check: [+0x000] dataful_variant [Type: _enum<core::option::Option<alloc::string::String>, 1, [...], Some>::Some]
72+
// cdb-check:k,! [Type: enum$<core::option::Option<alloc::string::String>, 1, [...], Some>]
73+
// cdb-check: [+0x000] dataful_variant [Type: enum$<core::option::Option<alloc::string::String>, 1, [...], Some>::Some]
7474
// cdb-check: [+0x000] __0 [Type: alloc::string::String]
75-
// cdb-check: [+0x000] discriminant$ [Type: _enum<core::option::Option<alloc::string::String>, 1, [...], Some>::discriminant$]
76-
// cdb-check: [+0x000] discriminant : 0x[...] [Type: _enum<core::option::Option<alloc::string::String>, 1, [...], Some>::tag$]
75+
// cdb-check: [+0x000] discriminant$ [Type: enum$<core::option::Option<alloc::string::String>, 1, [...], Some>::discriminant$]
76+
// cdb-check: [+0x000] discriminant : 0x[...] [Type: enum$<core::option::Option<alloc::string::String>, 1, [...], Some>::tag$]
7777

7878
pub enum CStyleEnum {
7979
Low = 2,

src/test/debuginfo/pretty-std.rs

+3-3
Original file line numberDiff line numberDiff line change
@@ -112,11 +112,11 @@
112112
// NOTE: OsString doesn't have a .natvis entry yet.
113113

114114
// cdb-command: dx some
115-
// cdb-check:some : Some [Type: _enum<core::option::Option<i16>>]
115+
// cdb-check:some : Some [Type: enum$<core::option::Option<i16>>]
116116
// cdb-command: dx none
117-
// cdb-check:none : None [Type: _enum<core::option::Option<i64>>]
117+
// cdb-check:none : None [Type: enum$<core::option::Option<i64>>]
118118
// cdb-command: dx some_string
119-
// cdb-check:some_string [Type: _enum<core::option::Option<alloc::string::String>, 1, [...], Some>]
119+
// cdb-check:some_string [Type: enum$<core::option::Option<alloc::string::String>, 1, [...], Some>]
120120

121121
#![allow(unused_variables)]
122122
use std::ffi::OsString;

0 commit comments

Comments
 (0)