]> git.proxmox.com Git - rustc.git/blame - src/test/debuginfo/issue-57822.rs
New upstream version 1.44.1+dfsg1
[rustc.git] / src / test / debuginfo / issue-57822.rs
CommitLineData
416331ca
XL
1// This test makes sure that the LLDB pretty printer does not throw an exception
2// for nested closures and generators.
3
ba9703b0 4// Require a gdb that can read DW_TAG_variant_part.
416331ca
XL
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 = closure-1(closure-0(1))
26
27// lldb-command:print b
28// lldbg-check:(issue_57822::main::generator-3) $1 = generator-3(generator-2(2))
29
30#![feature(omit_gdb_pretty_printer_section, generators, generator_trait)]
31#![omit_gdb_pretty_printer_section]
32
33use std::ops::Generator;
34use std::pin::Pin;
35
36fn 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 || {
74b04a01 47 Pin::new(&mut a).resume(());
416331ca
XL
48 yield;
49 };
50
51 zzz(); // #break
52}
53
54fn zzz() { () }