]> git.lizzy.rs Git - rust.git/blob - src/test/debuginfo/c-style-enum.rs
Auto merge of #82552 - GuillaumeGomez:rollup-8dn1ztn, r=GuillaumeGomez
[rust.git] / src / test / debuginfo / c-style-enum.rs
1 // ignore-tidy-linelength
2
3 // ignore-aarch64
4 // ignore-gdb // Test temporarily ignored due to debuginfo tests being disabled, see PR 47155
5 // min-lldb-version: 310
6
7 // compile-flags:-g
8
9 // === GDB TESTS ===================================================================================
10
11 // gdbg-command:print 'c_style_enum::SINGLE_VARIANT'
12 // gdbr-command:print c_style_enum::SINGLE_VARIANT
13 // gdbg-check:$1 = TheOnlyVariant
14 // gdbr-check:$1 = c_style_enum::SingleVariant::TheOnlyVariant
15
16 // gdbg-command:print 'c_style_enum::AUTO_ONE'
17 // gdbr-command:print c_style_enum::AUTO_ONE
18 // gdbg-check:$2 = One
19 // gdbr-check:$2 = c_style_enum::AutoDiscriminant::One
20
21 // gdbg-command:print 'c_style_enum::AUTO_TWO'
22 // gdbr-command:print c_style_enum::AUTO_TWO
23 // gdbg-check:$3 = One
24 // gdbr-check:$3 = c_style_enum::AutoDiscriminant::One
25
26 // gdbg-command:print 'c_style_enum::AUTO_THREE'
27 // gdbr-command:print c_style_enum::AUTO_THREE
28 // gdbg-check:$4 = One
29 // gdbr-check:$4 = c_style_enum::AutoDiscriminant::One
30
31 // gdbg-command:print 'c_style_enum::MANUAL_ONE'
32 // gdbr-command:print c_style_enum::MANUAL_ONE
33 // gdbg-check:$5 = OneHundred
34 // gdbr-check:$5 = c_style_enum::ManualDiscriminant::OneHundred
35
36 // gdbg-command:print 'c_style_enum::MANUAL_TWO'
37 // gdbr-command:print c_style_enum::MANUAL_TWO
38 // gdbg-check:$6 = OneHundred
39 // gdbr-check:$6 = c_style_enum::ManualDiscriminant::OneHundred
40
41 // gdbg-command:print 'c_style_enum::MANUAL_THREE'
42 // gdbr-command:print c_style_enum::MANUAL_THREE
43 // gdbg-check:$7 = OneHundred
44 // gdbr-check:$7 = c_style_enum::ManualDiscriminant::OneHundred
45
46 // gdb-command:run
47
48 // gdb-command:print auto_one
49 // gdbg-check:$8 = One
50 // gdbr-check:$8 = c_style_enum::AutoDiscriminant::One
51
52 // gdb-command:print auto_two
53 // gdbg-check:$9 = Two
54 // gdbr-check:$9 = c_style_enum::AutoDiscriminant::Two
55
56 // gdb-command:print auto_three
57 // gdbg-check:$10 = Three
58 // gdbr-check:$10 = c_style_enum::AutoDiscriminant::Three
59
60 // gdb-command:print manual_one_hundred
61 // gdbg-check:$11 = OneHundred
62 // gdbr-check:$11 = c_style_enum::ManualDiscriminant::OneHundred
63
64 // gdb-command:print manual_one_thousand
65 // gdbg-check:$12 = OneThousand
66 // gdbr-check:$12 = c_style_enum::ManualDiscriminant::OneThousand
67
68 // gdb-command:print manual_one_million
69 // gdbg-check:$13 = OneMillion
70 // gdbr-check:$13 = c_style_enum::ManualDiscriminant::OneMillion
71
72 // gdb-command:print single_variant
73 // gdbg-check:$14 = TheOnlyVariant
74 // gdbr-check:$14 = c_style_enum::SingleVariant::TheOnlyVariant
75
76 // gdbg-command:print 'c_style_enum::AUTO_TWO'
77 // gdbr-command:print AUTO_TWO
78 // gdbg-check:$15 = Two
79 // gdbr-check:$15 = c_style_enum::AutoDiscriminant::Two
80
81 // gdbg-command:print 'c_style_enum::AUTO_THREE'
82 // gdbr-command:print AUTO_THREE
83 // gdbg-check:$16 = Three
84 // gdbr-check:$16 = c_style_enum::AutoDiscriminant::Three
85
86 // gdbg-command:print 'c_style_enum::MANUAL_TWO'
87 // gdbr-command:print MANUAL_TWO
88 // gdbg-check:$17 = OneThousand
89 // gdbr-check:$17 = c_style_enum::ManualDiscriminant::OneThousand
90
91 // gdbg-command:print 'c_style_enum::MANUAL_THREE'
92 // gdbr-command:print MANUAL_THREE
93 // gdbg-check:$18 = OneMillion
94 // gdbr-check:$18 = c_style_enum::ManualDiscriminant::OneMillion
95
96
97 // === LLDB TESTS ==================================================================================
98
99 // lldb-command:run
100
101 // lldb-command:print auto_one
102 // lldbg-check:[...]$0 = One
103 // lldbr-check:(c_style_enum::AutoDiscriminant) auto_one = c_style_enum::AutoDiscriminant::One
104
105 // lldb-command:print auto_two
106 // lldbg-check:[...]$1 = Two
107 // lldbr-check:(c_style_enum::AutoDiscriminant) auto_two = c_style_enum::AutoDiscriminant::Two
108
109 // lldb-command:print auto_three
110 // lldbg-check:[...]$2 = Three
111 // lldbr-check:(c_style_enum::AutoDiscriminant) auto_three = c_style_enum::AutoDiscriminant::Three
112
113 // lldb-command:print manual_one_hundred
114 // lldbg-check:[...]$3 = OneHundred
115 // lldbr-check:(c_style_enum::ManualDiscriminant) manual_one_hundred = c_style_enum::ManualDiscriminant::OneHundred
116
117 // lldb-command:print manual_one_thousand
118 // lldbg-check:[...]$4 = OneThousand
119 // lldbr-check:(c_style_enum::ManualDiscriminant) manual_one_thousand = c_style_enum::ManualDiscriminant::OneThousand
120
121 // lldb-command:print manual_one_million
122 // lldbg-check:[...]$5 = OneMillion
123 // lldbr-check:(c_style_enum::ManualDiscriminant) manual_one_million = c_style_enum::ManualDiscriminant::OneMillion
124
125 // lldb-command:print single_variant
126 // lldbg-check:[...]$6 = TheOnlyVariant
127 // lldbr-check:(c_style_enum::SingleVariant) single_variant = c_style_enum::SingleVariant::TheOnlyVariant
128
129 #![allow(unused_variables)]
130 #![allow(dead_code)]
131 #![feature(omit_gdb_pretty_printer_section)]
132 #![omit_gdb_pretty_printer_section]
133
134 use self::AutoDiscriminant::{One, Two, Three};
135 use self::ManualDiscriminant::{OneHundred, OneThousand, OneMillion};
136 use self::SingleVariant::TheOnlyVariant;
137
138 #[derive(Copy, Clone)]
139 enum AutoDiscriminant {
140     One,
141     Two,
142     Three
143 }
144
145 #[derive(Copy, Clone)]
146 enum ManualDiscriminant {
147     OneHundred = 100,
148     OneThousand = 1000,
149     OneMillion = 1000000
150 }
151
152 #[derive(Copy, Clone)]
153 #[repr(u8)]
154 enum SingleVariant {
155     TheOnlyVariant
156 }
157
158 static SINGLE_VARIANT: SingleVariant = TheOnlyVariant;
159
160 static mut AUTO_ONE: AutoDiscriminant = One;
161 static mut AUTO_TWO: AutoDiscriminant = One;
162 static mut AUTO_THREE: AutoDiscriminant = One;
163
164 static mut MANUAL_ONE: ManualDiscriminant = OneHundred;
165 static mut MANUAL_TWO: ManualDiscriminant = OneHundred;
166 static mut MANUAL_THREE: ManualDiscriminant = OneHundred;
167
168 fn main() {
169
170     let auto_one = One;
171     let auto_two = Two;
172     let auto_three = Three;
173
174     let manual_one_hundred = OneHundred;
175     let manual_one_thousand = OneThousand;
176     let manual_one_million = OneMillion;
177
178     let single_variant = TheOnlyVariant;
179
180     unsafe {
181         AUTO_TWO = Two;
182         AUTO_THREE = Three;
183
184         MANUAL_TWO = OneThousand;
185         MANUAL_THREE = OneMillion;
186     };
187
188     zzz(); // #break
189
190     // Borrow to avoid an eager load of the constant value in the static.
191     let a = &SINGLE_VARIANT;
192     let a = unsafe { AUTO_ONE };
193     let a = unsafe { MANUAL_ONE };
194 }
195
196 fn zzz() { () }