]> git.lizzy.rs Git - rust.git/blob - src/test/debuginfo/lexical-scopes-in-block-expression.rs
Auto merge of #28816 - petrochenkov:unistruct, r=nrc
[rust.git] / src / test / debuginfo / lexical-scopes-in-block-expression.rs
1 // Copyright 2013-2014 The Rust Project Developers. See the COPYRIGHT
2 // file at the top-level directory of this distribution and at
3 // http://rust-lang.org/COPYRIGHT.
4 //
5 // Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
6 // http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
7 // <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
8 // option. This file may not be copied, modified, or distributed
9 // except according to those terms.
10
11 // min-lldb-version: 310
12
13 // compile-flags:-g
14
15 // === GDB TESTS ===================================================================================
16
17 // gdb-command:run
18
19 // gdb-command:print 'lexical_scopes_in_block_expression::MUT_INT'
20 // gdb-check:$1 = 0
21
22 // STRUCT EXPRESSION
23 // gdb-command:print val
24 // gdb-check:$2 = -1
25 // gdb-command:print ten
26 // gdb-check:$3 = 10
27 // gdb-command:continue
28
29 // gdb-command:print val
30 // gdb-check:$4 = 11
31 // gdb-command:print 'lexical_scopes_in_block_expression::MUT_INT'
32 // gdb-check:$5 = 1
33 // gdb-command:print ten
34 // gdb-check:$6 = 10
35 // gdb-command:continue
36
37 // gdb-command:print val
38 // gdb-check:$7 = -1
39 // gdb-command:print ten
40 // gdb-check:$8 = 10
41 // gdb-command:continue
42
43 // FUNCTION CALL
44 // gdb-command:print val
45 // gdb-check:$9 = -1
46 // gdb-command:print ten
47 // gdb-check:$10 = 10
48 // gdb-command:continue
49
50 // gdb-command:print val
51 // gdb-check:$11 = 12
52 // gdb-command:print 'lexical_scopes_in_block_expression::MUT_INT'
53 // gdb-check:$12 = 2
54 // gdb-command:print ten
55 // gdb-check:$13 = 10
56 // gdb-command:continue
57
58 // gdb-command:print val
59 // gdb-check:$14 = -1
60 // gdb-command:print ten
61 // gdb-check:$15 = 10
62 // gdb-command:continue
63
64 // TUPLE EXPRESSION
65 // gdb-command:print val
66 // gdb-check:$16 = -1
67 // gdb-command:print ten
68 // gdb-check:$17 = 10
69 // gdb-command:continue
70
71 // gdb-command:print val
72 // gdb-check:$18 = 13
73 // gdb-command:print 'lexical_scopes_in_block_expression::MUT_INT'
74 // gdb-check:$19 = 3
75 // gdb-command:print ten
76 // gdb-check:$20 = 10
77 // gdb-command:continue
78
79 // gdb-command:print val
80 // gdb-check:$21 = -1
81 // gdb-command:print ten
82 // gdb-check:$22 = 10
83 // gdb-command:continue
84
85 // VEC EXPRESSION
86 // gdb-command:print val
87 // gdb-check:$23 = -1
88 // gdb-command:print ten
89 // gdb-check:$24 = 10
90 // gdb-command:continue
91
92 // gdb-command:print val
93 // gdb-check:$25 = 14
94 // gdb-command:print 'lexical_scopes_in_block_expression::MUT_INT'
95 // gdb-check:$26 = 4
96 // gdb-command:print ten
97 // gdb-check:$27 = 10
98 // gdb-command:continue
99
100 // gdb-command:print val
101 // gdb-check:$28 = -1
102 // gdb-command:print ten
103 // gdb-check:$29 = 10
104 // gdb-command:continue
105
106 // REPEAT VEC EXPRESSION
107 // gdb-command:print val
108 // gdb-check:$30 = -1
109 // gdb-command:print ten
110 // gdb-check:$31 = 10
111 // gdb-command:continue
112
113 // gdb-command:print val
114 // gdb-check:$32 = 15
115 // gdb-command:print 'lexical_scopes_in_block_expression::MUT_INT'
116 // gdb-check:$33 = 5
117 // gdb-command:print ten
118 // gdb-check:$34 = 10
119 // gdb-command:continue
120
121 // gdb-command:print val
122 // gdb-check:$35 = -1
123 // gdb-command:print ten
124 // gdb-check:$36 = 10
125 // gdb-command:continue
126
127 // ASSIGNMENT EXPRESSION
128 // gdb-command:print val
129 // gdb-check:$37 = -1
130 // gdb-command:print ten
131 // gdb-check:$38 = 10
132 // gdb-command:continue
133
134 // gdb-command:print val
135 // gdb-check:$39 = 16
136 // gdb-command:print 'lexical_scopes_in_block_expression::MUT_INT'
137 // gdb-check:$40 = 6
138 // gdb-command:print ten
139 // gdb-check:$41 = 10
140 // gdb-command:continue
141
142 // gdb-command:print val
143 // gdb-check:$42 = -1
144 // gdb-command:print ten
145 // gdb-check:$43 = 10
146 // gdb-command:continue
147
148
149 // ARITHMETIC EXPRESSION
150 // gdb-command:print val
151 // gdb-check:$44 = -1
152 // gdb-command:print ten
153 // gdb-check:$45 = 10
154 // gdb-command:continue
155
156 // gdb-command:print val
157 // gdb-check:$46 = 17
158 // gdb-command:print 'lexical_scopes_in_block_expression::MUT_INT'
159 // gdb-check:$47 = 7
160 // gdb-command:print ten
161 // gdb-check:$48 = 10
162 // gdb-command:continue
163
164 // gdb-command:print val
165 // gdb-check:$49 = -1
166 // gdb-command:print ten
167 // gdb-check:$50 = 10
168 // gdb-command:continue
169
170 // INDEX EXPRESSION
171 // gdb-command:print val
172 // gdb-check:$51 = -1
173 // gdb-command:print ten
174 // gdb-check:$52 = 10
175 // gdb-command:continue
176
177 // gdb-command:print val
178 // gdb-check:$53 = 18
179 // gdb-command:print 'lexical_scopes_in_block_expression::MUT_INT'
180 // gdb-check:$54 = 8
181 // gdb-command:print ten
182 // gdb-check:$55 = 10
183 // gdb-command:continue
184
185 // gdb-command:print val
186 // gdb-check:$56 = -1
187 // gdb-command:print ten
188 // gdb-check:$57 = 10
189 // gdb-command:continue
190
191
192 // === LLDB TESTS ==================================================================================
193
194 // lldb-command:run
195
196 // STRUCT EXPRESSION
197 // lldb-command:print val
198 // lldb-check:[...]$0 = -1
199 // lldb-command:print ten
200 // lldb-check:[...]$1 = 10
201 // lldb-command:continue
202
203 // lldb-command:print val
204 // lldb-check:[...]$2 = 11
205 // lldb-command:print ten
206 // lldb-check:[...]$3 = 10
207 // lldb-command:continue
208
209 // lldb-command:print val
210 // lldb-check:[...]$4 = -1
211 // lldb-command:print ten
212 // lldb-check:[...]$5 = 10
213 // lldb-command:continue
214
215 // FUNCTION CALL
216 // lldb-command:print val
217 // lldb-check:[...]$6 = -1
218 // lldb-command:print ten
219 // lldb-check:[...]$7 = 10
220 // lldb-command:continue
221
222 // lldb-command:print val
223 // lldb-check:[...]$8 = 12
224 // lldb-command:print ten
225 // lldb-check:[...]$9 = 10
226 // lldb-command:continue
227
228 // lldb-command:print val
229 // lldb-check:[...]$10 = -1
230 // lldb-command:print ten
231 // lldb-check:[...]$11 = 10
232 // lldb-command:continue
233
234 // TUPLE EXPRESSION
235 // lldb-command:print val
236 // lldb-check:[...]$12 = -1
237 // lldb-command:print ten
238 // lldb-check:[...]$13 = 10
239 // lldb-command:continue
240
241 // lldb-command:print val
242 // lldb-check:[...]$14 = 13
243 // lldb-command:print ten
244 // lldb-check:[...]$15 = 10
245 // lldb-command:continue
246
247 // lldb-command:print val
248 // lldb-check:[...]$16 = -1
249 // lldb-command:print ten
250 // lldb-check:[...]$17 = 10
251 // lldb-command:continue
252
253 // VEC EXPRESSION
254 // lldb-command:print val
255 // lldb-check:[...]$18 = -1
256 // lldb-command:print ten
257 // lldb-check:[...]$19 = 10
258 // lldb-command:continue
259
260 // lldb-command:print val
261 // lldb-check:[...]$20 = 14
262 // lldb-command:print ten
263 // lldb-check:[...]$21 = 10
264 // lldb-command:continue
265
266 // lldb-command:print val
267 // lldb-check:[...]$22 = -1
268 // lldb-command:print ten
269 // lldb-check:[...]$23 = 10
270 // lldb-command:continue
271
272 // REPEAT VEC EXPRESSION
273 // lldb-command:print val
274 // lldb-check:[...]$24 = -1
275 // lldb-command:print ten
276 // lldb-check:[...]$25 = 10
277 // lldb-command:continue
278
279 // lldb-command:print val
280 // lldb-check:[...]$26 = 15
281 // lldb-command:print ten
282 // lldb-check:[...]$27 = 10
283 // lldb-command:continue
284
285 // lldb-command:print val
286 // lldb-check:[...]$28 = -1
287 // lldb-command:print ten
288 // lldb-check:[...]$29 = 10
289 // lldb-command:continue
290
291 // ASSIGNMENT EXPRESSION
292 // lldb-command:print val
293 // lldb-check:[...]$30 = -1
294 // lldb-command:print ten
295 // lldb-check:[...]$31 = 10
296 // lldb-command:continue
297
298 // lldb-command:print val
299 // lldb-check:[...]$32 = 16
300 // lldb-command:print ten
301 // lldb-check:[...]$33 = 10
302 // lldb-command:continue
303
304 // lldb-command:print val
305 // lldb-check:[...]$34 = -1
306 // lldb-command:print ten
307 // lldb-check:[...]$35 = 10
308 // lldb-command:continue
309
310
311 // ARITHMETIC EXPRESSION
312 // lldb-command:print val
313 // lldb-check:[...]$36 = -1
314 // lldb-command:print ten
315 // lldb-check:[...]$37 = 10
316 // lldb-command:continue
317
318 // lldb-command:print val
319 // lldb-check:[...]$38 = 17
320 // lldb-command:print ten
321 // lldb-check:[...]$39 = 10
322 // lldb-command:continue
323
324 // lldb-command:print val
325 // lldb-check:[...]$40 = -1
326 // lldb-command:print ten
327 // lldb-check:[...]$41 = 10
328 // lldb-command:continue
329
330 // INDEX EXPRESSION
331 // lldb-command:print val
332 // lldb-check:[...]$42 = -1
333 // lldb-command:print ten
334 // lldb-check:[...]$43 = 10
335 // lldb-command:continue
336
337 // lldb-command:print val
338 // lldb-check:[...]$44 = 18
339 // lldb-command:print ten
340 // lldb-check:[...]$45 = 10
341 // lldb-command:continue
342
343 // lldb-command:print val
344 // lldb-check:[...]$46 = -1
345 // lldb-command:print ten
346 // lldb-check:[...]$47 = 10
347 // lldb-command:continue
348
349 #![allow(unused_variables)]
350 #![allow(unused_assignments)]
351 #![feature(omit_gdb_pretty_printer_section)]
352 #![omit_gdb_pretty_printer_section]
353
354 static mut MUT_INT: isize = 0;
355
356 struct Point {
357     x: isize,
358     y: isize
359 }
360
361 fn a_function(x: isize) -> isize {
362     x + 1
363 }
364
365 fn main() {
366
367     let val = -1;
368     let ten = 10;
369
370     // surrounded by struct expression
371     let point = Point {
372         x: {
373             zzz(); // #break
374             sentinel();
375
376             let val = ten + 1;
377             unsafe {MUT_INT = 1;};
378
379             zzz(); // #break
380             sentinel();
381
382             val
383         },
384         y: 10
385     };
386
387     zzz(); // #break
388     sentinel();
389
390     // surrounded by function call
391     let _ = a_function({
392         zzz(); // #break
393         sentinel();
394
395         let val = ten + 2;
396         unsafe {MUT_INT = 2;};
397
398         zzz(); // #break
399         sentinel();
400
401         val
402     });
403
404     zzz(); // #break
405     sentinel();
406
407
408     // surrounded by tup
409     let _ = ({
410         zzz(); // #break
411         sentinel();
412
413         let val = ten + 3;
414         unsafe {MUT_INT = 3;};
415
416         zzz(); // #break
417         sentinel();
418
419         val
420     }, 0);
421
422     zzz(); // #break
423     sentinel();
424
425     // surrounded by vec
426     let _ = [{
427         zzz(); // #break
428         sentinel();
429
430         let val = ten + 4;
431         unsafe {MUT_INT = 4;};
432
433         zzz(); // #break
434         sentinel();
435
436         val
437     }, 0, 0];
438
439     zzz(); // #break
440     sentinel();
441
442     // surrounded by repeat vec
443     let _ = [{
444         zzz(); // #break
445         sentinel();
446
447         let val = ten + 5;
448         unsafe {MUT_INT = 5;};
449
450         zzz(); // #break
451         sentinel();
452
453         val
454     }; 10];
455
456     zzz(); // #break
457     sentinel();
458
459     // assignment expression
460     let mut var = 0;
461     var = {
462         zzz(); // #break
463         sentinel();
464
465         let val = ten + 6;
466         unsafe {MUT_INT = 6;};
467
468         zzz(); // #break
469         sentinel();
470
471         val
472     };
473
474     zzz(); // #break
475     sentinel();
476
477     // arithmetic expression
478     var = 10 + -{
479         zzz(); // #break
480         sentinel();
481
482         let val = ten + 7;
483         unsafe {MUT_INT = 7;};
484
485         zzz(); // #break
486         sentinel();
487
488         val
489     } * 5;
490
491     zzz(); // #break
492     sentinel();
493
494     // index expression
495     let a_vector = [10; 20];
496     let _ = a_vector[{
497         zzz(); // #break
498         sentinel();
499
500         let val = ten + 8;
501         unsafe {MUT_INT = 8;};
502
503         zzz(); // #break
504         sentinel();
505
506         val as usize
507     }];
508
509     zzz(); // #break
510     sentinel();
511 }
512
513 fn zzz() {()}
514 fn sentinel() {()}