]> git.lizzy.rs Git - rust.git/blob - tests/debuginfo/var-captured-in-stack-closure.rs
Extend `BYTE_SLICE_IN_PACKED_STRUCT_WITH_DERIVE`.
[rust.git] / tests / 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
77 // === CDB TESTS ===================================================================================
78
79 // cdb-command: g
80
81 // cdb-command: dx variable
82 // cdb-check:variable         : 1 [Type: [...]]
83 // cdb-command: dx constant
84 // cdb-check:constant         : 2 [Type: [...]]
85 // cdb-command: dx a_struct
86 // cdb-check:a_struct         [Type: var_captured_in_stack_closure::Struct]
87 // cdb-check:    [+0x[...]] a                : -3 [Type: [...]]
88 // cdb-check:    [+0x[...]] b                : 4.500000 [Type: [...]]
89 // cdb-check:    [+0x[...]] c                : 0x5 [Type: unsigned [...]]
90 // cdb-command: dx struct_ref
91 // cdb-check:struct_ref       : 0x[...] [Type: var_captured_in_stack_closure::Struct *]
92 // cdb-check:    [+0x[...]] a                : -3 [Type: [...]]
93 // cdb-check:    [+0x[...]] b                : 4.500000 [Type: [...]]
94 // cdb-check:    [+0x[...]] c                : 0x5 [Type: unsigned [...]]
95 // cdb-command: dx owned
96 // cdb-check:owned            : 0x[...] : 6 [Type: [...] *]
97
98
99 // cdb-command: g
100
101 // cdb-command: dx variable
102 // cdb-check:variable         : 2 [Type: [...]]
103 // cdb-command: dx constant
104 // cdb-check:constant         : 2 [Type: [...]]
105 // cdb-command: dx a_struct
106 // cdb-check:a_struct         [Type: var_captured_in_stack_closure::Struct]
107 // cdb-check:    [+0x[...]] a                : -3 [Type: [...]]
108 // cdb-check:    [+0x[...]] b                : 4.500000 [Type: [...]]
109 // cdb-check:    [+0x[...]] c                : 0x5 [Type: unsigned [...]]
110 // cdb-command: dx struct_ref
111 // cdb-check:struct_ref       : 0x[...] [Type: var_captured_in_stack_closure::Struct *]
112 // cdb-check:    [+0x[...]] a                : -3 [Type: [...]]
113 // cdb-check:    [+0x[...]] b                : 4.500000 [Type: [...]]
114 // cdb-check:    [+0x[...]] c                : 0x5 [Type: unsigned [...]]
115 // cdb-command: dx owned
116 // cdb-check:owned            : 0x[...] : 6 [Type: [...] *]
117
118 #![allow(unused_variables)]
119 #![feature(omit_gdb_pretty_printer_section)]
120 #![omit_gdb_pretty_printer_section]
121
122 struct Struct {
123     a: isize,
124     b: f64,
125     c: usize
126 }
127
128 fn main() {
129     let mut variable = 1;
130     let constant = 2;
131
132     let a_struct = Struct {
133         a: -3,
134         b: 4.5,
135         c: 5
136     };
137
138     let struct_ref = &a_struct;
139     let owned: Box<_> = Box::new(6);
140
141     {
142         let mut first_closure = || {
143             zzz(); // #break
144             variable = constant + a_struct.a + struct_ref.a + *owned;
145         };
146
147         first_closure();
148     }
149
150     {
151         let mut second_closure = || {
152             zzz(); // #break
153             variable = constant + a_struct.a + struct_ref.a + *owned;
154         };
155         second_closure();
156     }
157 }
158
159 fn zzz() {()}