Skip to content

Commit 84a2661

Browse files
committed
Add test for stepping though match expressions
1 parent 0a42dfc commit 84a2661

File tree

1 file changed

+383
-0
lines changed

1 file changed

+383
-0
lines changed

src/test/debuginfo/step-into-match.rs

Lines changed: 383 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,383 @@
1+
// compile-flags: -g
2+
// ignore-android: FIXME(#10381)
3+
4+
// === GDB TESTS ==============================================================
5+
6+
// gdb-command: r
7+
8+
// gdb-command: s
9+
// gdb-check:[...]match x {
10+
11+
// gdb-command: s
12+
// gdb-check:[...] Some(42) => 1,
13+
14+
// gdb-command: s
15+
// gdb-check:[...]}
16+
17+
// gdb-command: s
18+
// gdb-check:[...]match_enum(Some(12));
19+
20+
// gdb-command: s
21+
// gdb-check:[...]match x {
22+
23+
// gdb-command: s
24+
// gdb-check:[...]Some(_) => 2,
25+
26+
// gdb-command: s
27+
// gdb-check:[...]}
28+
29+
// gdb-command: s
30+
// gdb-check:[...]match_enum(None);
31+
32+
// gdb-command: s
33+
// gdb-check:[...]match x {
34+
35+
// gdb-command: s
36+
// gdb-check:[...]None => 3,
37+
38+
// gdb-command: s
39+
// gdb-check:[...]}
40+
41+
// gdb-command: s
42+
// gdb-check:[...]match_int(1);
43+
44+
// gdb-command: s
45+
// gdb-check:[...]match y {
46+
47+
// gdb-command: s
48+
// gdb-check:[...]1 => 3,
49+
50+
// gdb-command: s
51+
// gdb-check:[...]}
52+
53+
// gdb-command: s
54+
// gdb-check:[...]match_int(2);
55+
56+
// gdb-command: s
57+
// gdb-check:[...]match y {
58+
59+
// gdb-command: s
60+
// gdb-check:[...]_ => 4,
61+
62+
// gdb-command: s
63+
// gdb-check:[...]}
64+
65+
// gdb-command: s
66+
// gdb-check:[...]match_int(0);
67+
68+
// gdb-command: s
69+
// gdb-check:[...]match y {
70+
71+
// gdb-command: s
72+
// gdb-check:[...]0 => 2,
73+
74+
// gdb-command: s
75+
// gdb-check:[...]}
76+
77+
// gdb-command: s
78+
// gdb-check:[...]match_int(-1);
79+
80+
// gdb-command: s
81+
// gdb-check:[...]match y {
82+
83+
// gdb-command: s
84+
// gdb-check:[...]-1 => 1,
85+
86+
// gdb-command: s
87+
// gdb-check:[...]}
88+
89+
// gdb-command: s
90+
// gdb-check:[...]match_tuple(5, 12);
91+
92+
// gdb-command: s
93+
// gdb-check:[...]match (a, b) {
94+
95+
// gdb-command: s
96+
// gdb-check:[...](5, 12) => 3,
97+
98+
// gdb-command: s
99+
// gdb-check:[...]}
100+
101+
// gdb-command: s
102+
// gdb-check:[...]match_tuple(29, 1);
103+
104+
// gdb-command: s
105+
// gdb-check:[...]match (a, b) {
106+
107+
// gdb-command: s
108+
// gdb-check:[...](29, _) => 2,
109+
110+
// gdb-command: s
111+
// gdb-check:[...]}
112+
113+
// gdb-command: s
114+
// gdb-check:[...]match_tuple(12, 12);
115+
116+
// gdb-command: s
117+
// gdb-check:[...]match (a, b) {
118+
119+
// gdb-command: s
120+
// gdb-check:[...](_, _) => 5
121+
122+
// gdb-command: s
123+
// gdb-check:[...]}
124+
125+
// gdb-command: s
126+
// gdb-check:[...]match_tuple(42, 12);
127+
128+
// gdb-command: s
129+
// gdb-check:[...]match (a, b) {
130+
131+
// gdb-command: s
132+
// gdb-check:[...](42, 12) => 1,
133+
134+
// gdb-command: s
135+
// gdb-check:[...]}
136+
137+
// gdb-command: s
138+
// gdb-check:[...]match_tuple(1, 9);
139+
140+
// gdb-command: s
141+
// gdb-check:[...]match (a, b) {
142+
143+
// gdb-command: s
144+
// gdb-check:[...](_, 9) => 4,
145+
146+
// gdb-command: s
147+
// gdb-check:[...]}
148+
149+
// gdb-command: s
150+
// gdb-check:[...]}
151+
152+
// === CDB TESTS ==============================================================
153+
154+
// Enable line-based debugging and print lines after stepping.
155+
// cdb-command: .lines -e
156+
// cdb-command: l+s
157+
// cdb-command: l+t
158+
159+
// cdb-command: g
160+
161+
// cdb-command: t
162+
// cdb-check: [...]: fn match_enum(x: Option<u32>) -> u8 {
163+
164+
// cdb-command: t
165+
// cdb-check: [...]: match x {
166+
167+
// cdb-command: t
168+
// cdb-check: [...]: Some(42) => 1,
169+
170+
// cdb-command: t
171+
// cdb-check: [...]: }
172+
173+
// cdb-command: t
174+
// cdb-check: [...]: match_enum(Some(12));
175+
176+
// cdb-command: t
177+
// cdb-check: [...]: fn match_enum(x: Option<u32>) -> u8 {
178+
179+
// cdb-command: t
180+
// cdb-check: [...]: match x {
181+
182+
// cdb-command: t
183+
// cdb-check: [...]: Some(_) => 2,
184+
185+
// cdb-command: t
186+
// cdb-check: [...]: }
187+
188+
// cdb-command: t
189+
// cdb-check: [...]: match_enum(None);
190+
191+
// cdb-command: t
192+
// cdb-check: [...]: fn match_enum(x: Option<u32>) -> u8 {
193+
194+
// cdb-command: t
195+
// cdb-check: [...]: match x {
196+
197+
// cdb-command: t
198+
// cdb-check: [...]: None => 3,
199+
200+
// cdb-command: t
201+
// cdb-check: [...]: }
202+
203+
// cdb-command: t
204+
// cdb-check: [...]: match_int(1);
205+
206+
// cdb-command: t
207+
// cdb-check: [...]: fn match_int(y: i32) -> u16 {
208+
209+
// cdb-command: t
210+
// cdb-check: [...]: match y {
211+
212+
// cdb-command: t
213+
// cdb-check: [...]: 1 => 3,
214+
215+
// cdb-command: t
216+
// cdb-check: [...]: }
217+
218+
// cdb-command: t
219+
// cdb-check: [...]: match_int(2);
220+
221+
// cdb-command: t
222+
// cdb-check: [...]: fn match_int(y: i32) -> u16 {
223+
224+
// cdb-command: t
225+
// cdb-check: [...]: match y {
226+
227+
// cdb-command: t
228+
// cdb-check: [...]: _ => 4,
229+
230+
// cdb-command: t
231+
// cdb-check: [...]: }
232+
233+
// cdb-command: t
234+
// cdb-check: [...]: match_int(0);
235+
236+
// cdb-command: t
237+
// cdb-check: [...]: fn match_int(y: i32) -> u16 {
238+
239+
// cdb-command: t
240+
// cdb-check: [...]: match y {
241+
242+
// cdb-command: t
243+
// cdb-check: [...]: 0 => 2,
244+
245+
// cdb-command: t
246+
// cdb-check: [...]: }
247+
248+
// cdb-command: t
249+
// cdb-check: [...]: match_int(-1);
250+
251+
// cdb-command: t
252+
// cdb-check: [...]: fn match_int(y: i32) -> u16 {
253+
254+
// cdb-command: t
255+
// cdb-check: [...]: match y {
256+
257+
// cdb-command: t
258+
// cdb-check: [...]: -1 => 1,
259+
260+
// cdb-command: t
261+
// cdb-check: [...]: }
262+
263+
// cdb-command: t
264+
// cdb-check: [...]: match_tuple(5, 12);
265+
266+
// cdb-command: t
267+
// cdb-check: [...]: fn match_tuple(a: u8, b: i8) -> u32 {
268+
269+
// cdb-command: t
270+
// cdb-check: [...]: match (a, b) {
271+
272+
// cdb-command: t
273+
// cdb-check: [...]: (5, 12) => 3,
274+
275+
// cdb-command: t
276+
// cdb-check: [...]: }
277+
278+
// cdb-command: t
279+
// cdb-check: [...]: match_tuple(29, 1);
280+
281+
// cdb-command: t
282+
// cdb-check: [...]: fn match_tuple(a: u8, b: i8) -> u32 {
283+
284+
// cdb-command: t
285+
// cdb-check: [...]: match (a, b) {
286+
287+
// cdb-command: t
288+
// cdb-check: [...]: (29, _) => 2,
289+
290+
// cdb-command: t
291+
// cdb-check: [...]: }
292+
293+
// cdb-command: t
294+
// cdb-check: [...]: match_tuple(12, 12);
295+
296+
// cdb-command: t
297+
// cdb-check: [...]: fn match_tuple(a: u8, b: i8) -> u32 {
298+
299+
// cdb-command: t
300+
// cdb-check: [...]: match (a, b) {
301+
302+
// cdb-command: t
303+
// cdb-check: [...]: (_, _) => 5
304+
305+
// cdb-command: t
306+
// cdb-check: [...]: }
307+
308+
// cdb-command: t
309+
// cdb-check: [...]: match_tuple(42, 12);
310+
311+
// cdb-command: t
312+
// cdb-check: [...]: fn match_tuple(a: u8, b: i8) -> u32 {
313+
314+
// cdb-command: t
315+
// cdb-check: [...]: match (a, b) {
316+
317+
// cdb-command: t
318+
// cdb-check: [...]: (42, 12) => 1,
319+
320+
// cdb-command: t
321+
// cdb-check: [...]: }
322+
323+
// cdb-command: t
324+
// cdb-check: [...]: match_tuple(1, 9);
325+
326+
// cdb-command: t
327+
// cdb-check: [...]: fn match_tuple(a: u8, b: i8) -> u32 {
328+
329+
// cdb-command: t
330+
// cdb-check: [...]: match (a, b) {
331+
332+
// cdb-command: t
333+
// cdb-check: [...]: (_, 9) => 4,
334+
335+
// cdb-command: t
336+
// cdb-check: [...]: }
337+
338+
// cdb-command: t
339+
// cdb-check: [...]: }
340+
341+
fn main() {
342+
match_enum(Some(42)); // #break
343+
match_enum(Some(12));
344+
match_enum(None);
345+
346+
match_int(1);
347+
match_int(2);
348+
match_int(0);
349+
match_int(-1);
350+
351+
match_tuple(5, 12);
352+
match_tuple(29, 1);
353+
match_tuple(12, 12);
354+
match_tuple(42, 12);
355+
match_tuple(1, 9);
356+
}
357+
358+
fn match_enum(x: Option<u32>) -> u8 {
359+
match x {
360+
Some(42) => 1,
361+
Some(_) => 2,
362+
None => 3,
363+
}
364+
}
365+
366+
fn match_int(y: i32) -> u16 {
367+
match y {
368+
-1 => 1,
369+
0 => 2,
370+
1 => 3,
371+
_ => 4,
372+
}
373+
}
374+
375+
fn match_tuple(a: u8, b: i8) -> u32 {
376+
match (a, b) {
377+
(42, 12) => 1,
378+
(29, _) => 2,
379+
(5, 12) => 3,
380+
(_, 9) => 4,
381+
(_, _) => 5
382+
}
383+
}

0 commit comments

Comments
 (0)