]> git.lizzy.rs Git - rust.git/blob - src/test/debuginfo/generator-objects.rs
Compress amount of hashed bytes for `isize` values in StableHasher
[rust.git] / src / test / debuginfo / generator-objects.rs
1 // Require a gdb that can read DW_TAG_variant_part.
2 // min-gdb-version: 8.2
3
4 // LLDB without native Rust support cannot read DW_TAG_variant_part,
5 // so it prints nothing for generators. But those tests are kept to
6 // ensure that LLDB won't crash at least (like #57822).
7
8 // compile-flags:-g
9
10 // === GDB TESTS ===================================================================================
11
12 // gdb-command:run
13 // gdb-command:print b
14 // gdb-check:$1 = generator_objects::main::{generator#0}::Unresumed{_ref__a: 0x[...]}
15 // gdb-command:continue
16 // gdb-command:print b
17 // gdb-check:$2 = generator_objects::main::{generator#0}::Suspend0{c: 6, d: 7, _ref__a: 0x[...]}
18 // gdb-command:continue
19 // gdb-command:print b
20 // gdb-check:$3 = generator_objects::main::{generator#0}::Suspend1{c: 7, d: 8, _ref__a: 0x[...]}
21 // gdb-command:continue
22 // gdb-command:print b
23 // gdb-check:$4 = generator_objects::main::{generator#0}::Returned{_ref__a: 0x[...]}
24
25 // === LLDB TESTS ==================================================================================
26
27 // lldb-command:run
28 // lldb-command:print b
29 // lldbg-check:(generator_objects::main::{generator#0}) $0 =
30 // lldb-command:continue
31 // lldb-command:print b
32 // lldbg-check:(generator_objects::main::{generator#0}) $1 =
33 // lldb-command:continue
34 // lldb-command:print b
35 // lldbg-check:(generator_objects::main::{generator#0}) $2 =
36 // lldb-command:continue
37 // lldb-command:print b
38 // lldbg-check:(generator_objects::main::{generator#0}) $3 =
39
40 #![feature(omit_gdb_pretty_printer_section, generators, generator_trait)]
41 #![omit_gdb_pretty_printer_section]
42
43 use std::ops::Generator;
44 use std::pin::Pin;
45
46 fn main() {
47     let mut a = 5;
48     let mut b = || {
49         let mut c = 6;
50         let mut d = 7;
51
52         yield;
53         a += 1;
54         c += 1;
55         d += 1;
56
57         yield;
58         println!("{} {} {}", a, c, d);
59     };
60     _zzz(); // #break
61     Pin::new(&mut b).resume(());
62     _zzz(); // #break
63     Pin::new(&mut b).resume(());
64     _zzz(); // #break
65     Pin::new(&mut b).resume(());
66     _zzz(); // #break
67 }
68
69 fn _zzz() {()}