]> git.lizzy.rs Git - rust.git/blob - src/test/debuginfo/issue-57822.rs
Rollup merge of #77368 - est31:apfloat_fix, r=varkor
[rust.git] / src / test / debuginfo / issue-57822.rs
1 // This test makes sure that the LLDB pretty printer does not throw an exception
2 // for nested closures and generators.
3
4 // Require a gdb that can read DW_TAG_variant_part.
5 // min-gdb-version: 8.2
6 // ignore-tidy-linelength
7
8 // compile-flags:-g
9
10 // === GDB TESTS ===================================================================================
11
12 // gdb-command:run
13
14 // gdb-command:print g
15 // gdb-check:$1 = issue_57822::main::closure-1 (issue_57822::main::closure-0 (1))
16
17 // gdb-command:print b
18 // gdb-check:$2 = issue_57822::main::generator-3 {__0: issue_57822::main::generator-2 {__0: 2, <<variant>>: {[...]}}, <<variant>>: {[...]}}
19
20 // === LLDB TESTS ==================================================================================
21
22 // lldb-command:run
23
24 // lldb-command:print g
25 // lldbg-check:(issue_57822::main::closure-1) $0 = { 0 = { 0 = 1 } }
26
27 // lldb-command:print b
28 // lldbg-check:(issue_57822::main::generator-3) $1 = { 0 = { 0 = 2 } }
29
30 #![feature(omit_gdb_pretty_printer_section, generators, generator_trait)]
31 #![omit_gdb_pretty_printer_section]
32
33 use std::ops::Generator;
34 use std::pin::Pin;
35
36 fn main() {
37     let mut x = 1;
38     let f = move || x;
39     let g = move || f();
40
41     let mut y = 2;
42     let mut a = move || {
43         y += 1;
44         yield;
45     };
46     let mut b = move || {
47         Pin::new(&mut a).resume(());
48         yield;
49     };
50
51     zzz(); // #break
52 }
53
54 fn zzz() { () }