]> git.lizzy.rs Git - rust.git/blob - src/test/debuginfo/generator-objects.rs
Auto merge of #82552 - GuillaumeGomez:rollup-8dn1ztn, r=GuillaumeGomez
[rust.git] / src / test / debuginfo / generator-objects.rs
1 // ignore-tidy-linelength
2
3 // Require a gdb that can read DW_TAG_variant_part.
4 // min-gdb-version: 8.2
5
6 // compile-flags:-g
7
8 // === GDB TESTS ===================================================================================
9
10 // gdb-command:run
11 // gdb-command:print b
12 // gdb-check:$1 = generator_objects::main::generator-0 {__0: 0x[...], <<variant>>: {__state: 0, 0: generator_objects::main::generator-0::Unresumed, 1: generator_objects::main::generator-0::Returned, 2: generator_objects::main::generator-0::Panicked, 3: generator_objects::main::generator-0::Suspend0 {[...]}, 4: generator_objects::main::generator-0::Suspend1 {[...]}}}
13 // gdb-command:continue
14 // gdb-command:print b
15 // gdb-check:$2 = generator_objects::main::generator-0 {__0: 0x[...], <<variant>>: {__state: 3, 0: generator_objects::main::generator-0::Unresumed, 1: generator_objects::main::generator-0::Returned, 2: generator_objects::main::generator-0::Panicked, 3: generator_objects::main::generator-0::Suspend0 {c: 6, d: 7}, 4: generator_objects::main::generator-0::Suspend1 {[...]}}}
16 // gdb-command:continue
17 // gdb-command:print b
18 // gdb-check:$3 = generator_objects::main::generator-0 {__0: 0x[...], <<variant>>: {__state: 4, 0: generator_objects::main::generator-0::Unresumed, 1: generator_objects::main::generator-0::Returned, 2: generator_objects::main::generator-0::Panicked, 3: generator_objects::main::generator-0::Suspend0 {[...]}, 4: generator_objects::main::generator-0::Suspend1 {c: 7, d: 8}}}
19 // gdb-command:continue
20 // gdb-command:print b
21 // gdb-check:$4 = generator_objects::main::generator-0 {__0: 0x[...], <<variant>>: {__state: 1, 0: generator_objects::main::generator-0::Unresumed, 1: generator_objects::main::generator-0::Returned, 2: generator_objects::main::generator-0::Panicked, 3: generator_objects::main::generator-0::Suspend0 {[...]}, 4: generator_objects::main::generator-0::Suspend1 {[...]}}}
22
23 // === LLDB TESTS ==================================================================================
24
25 // lldb-command:run
26 // lldb-command:print b
27 // lldbg-check:(generator_objects::main::generator-0) $0 = { 0 = 0x[...] }
28 // lldb-command:continue
29 // lldb-command:print b
30 // lldbg-check:(generator_objects::main::generator-0) $1 = { 0 = 0x[...] }
31 // lldb-command:continue
32 // lldb-command:print b
33 // lldbg-check:(generator_objects::main::generator-0) $2 = { 0 = 0x[...] }
34 // lldb-command:continue
35 // lldb-command:print b
36 // lldbg-check:(generator_objects::main::generator-0) $3 = { 0 = 0x[...] }
37
38 #![feature(omit_gdb_pretty_printer_section, generators, generator_trait)]
39 #![omit_gdb_pretty_printer_section]
40
41 use std::ops::Generator;
42 use std::pin::Pin;
43
44 fn main() {
45     let mut a = 5;
46     let mut b = || {
47         let mut c = 6;
48         let mut d = 7;
49
50         yield;
51         a += 1;
52         c += 1;
53         d += 1;
54
55         yield;
56         println!("{} {} {}", a, c, d);
57     };
58     _zzz(); // #break
59     Pin::new(&mut b).resume(());
60     _zzz(); // #break
61     Pin::new(&mut b).resume(());
62     _zzz(); // #break
63     Pin::new(&mut b).resume(());
64     _zzz(); // #break
65 }
66
67 fn _zzz() {()}