]> git.lizzy.rs Git - rust.git/blob - src/test/debuginfo/var-captured-in-stack-closure.rs
Auto merge of #82552 - GuillaumeGomez:rollup-8dn1ztn, r=GuillaumeGomez
[rust.git] / src / test / debuginfo / var-captured-in-stack-closure.rs
1 // min-lldb-version: 310
2
3 // compile-flags:-g
4
5 // === GDB TESTS ===================================================================================
6
7 // gdb-command:run
8
9 // gdb-command:print variable
10 // gdb-check:$1 = 1
11 // gdb-command:print constant
12 // gdb-check:$2 = 2
13 // gdb-command:print a_struct
14 // gdbg-check:$3 = {a = -3, b = 4.5, c = 5}
15 // gdbr-check:$3 = var_captured_in_stack_closure::Struct {a: -3, b: 4.5, c: 5}
16 // gdb-command:print *struct_ref
17 // gdbg-check:$4 = {a = -3, b = 4.5, c = 5}
18 // gdbr-check:$4 = var_captured_in_stack_closure::Struct {a: -3, b: 4.5, c: 5}
19 // gdb-command:print *owned
20 // gdb-check:$5 = 6
21
22 // gdb-command:continue
23
24 // gdb-command:print variable
25 // gdb-check:$6 = 2
26 // gdb-command:print constant
27 // gdb-check:$7 = 2
28 // gdb-command:print a_struct
29 // gdbg-check:$8 = {a = -3, b = 4.5, c = 5}
30 // gdbr-check:$8 = var_captured_in_stack_closure::Struct {a: -3, b: 4.5, c: 5}
31 // gdb-command:print *struct_ref
32 // gdbg-check:$9 = {a = -3, b = 4.5, c = 5}
33 // gdbr-check:$9 = var_captured_in_stack_closure::Struct {a: -3, b: 4.5, c: 5}
34 // gdb-command:print *owned
35 // gdb-check:$10 = 6
36
37
38 // === LLDB TESTS ==================================================================================
39
40 // lldb-command:run
41
42 // lldb-command:print variable
43 // lldbg-check:[...]$0 = 1
44 // lldbr-check:(isize) variable = 1
45 // lldb-command:print constant
46 // lldbg-check:[...]$1 = 2
47 // lldbr-check:(isize) constant = 2
48 // lldb-command:print a_struct
49 // lldbg-check:[...]$2 = { a = -3 b = 4.5 c = 5 }
50 // lldbr-check:(var_captured_in_stack_closure::Struct) a_struct = { a = -3 b = 4.5 c = 5 }
51 // lldb-command:print *struct_ref
52 // lldbg-check:[...]$3 = { a = -3 b = 4.5 c = 5 }
53 // lldbr-check:(var_captured_in_stack_closure::Struct) *struct_ref = { a = -3 b = 4.5 c = 5 }
54 // lldb-command:print *owned
55 // lldbg-check:[...]$4 = 6
56 // lldbr-check:(isize) *owned = 6
57
58 // lldb-command:continue
59
60 // lldb-command:print variable
61 // lldbg-check:[...]$5 = 2
62 // lldbr-check:(isize) variable = 2
63 // lldb-command:print constant
64 // lldbg-check:[...]$6 = 2
65 // lldbr-check:(isize) constant = 2
66 // lldb-command:print a_struct
67 // lldbg-check:[...]$7 = { a = -3 b = 4.5 c = 5 }
68 // lldbr-check:(var_captured_in_stack_closure::Struct) a_struct = { a = -3 b = 4.5 c = 5 }
69 // lldb-command:print *struct_ref
70 // lldbg-check:[...]$8 = { a = -3 b = 4.5 c = 5 }
71 // lldbr-check:(var_captured_in_stack_closure::Struct) *struct_ref = { a = -3 b = 4.5 c = 5 }
72 // lldb-command:print *owned
73 // lldbg-check:[...]$9 = 6
74 // lldbr-check:(isize) *owned = 6
75
76 #![feature(box_syntax)]
77 #![allow(unused_variables)]
78 #![feature(omit_gdb_pretty_printer_section)]
79 #![omit_gdb_pretty_printer_section]
80
81 struct Struct {
82     a: isize,
83     b: f64,
84     c: usize
85 }
86
87 fn main() {
88     let mut variable = 1;
89     let constant = 2;
90
91     let a_struct = Struct {
92         a: -3,
93         b: 4.5,
94         c: 5
95     };
96
97     let struct_ref = &a_struct;
98     let owned: Box<_> = box 6;
99
100     {
101         let mut first_closure = || {
102             zzz(); // #break
103             variable = constant + a_struct.a + struct_ref.a + *owned;
104         };
105
106         first_closure();
107     }
108
109     {
110         let mut second_closure = || {
111             zzz(); // #break
112             variable = constant + a_struct.a + struct_ref.a + *owned;
113         };
114         second_closure();
115     }
116 }
117
118 fn zzz() {()}