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