]> git.lizzy.rs Git - rust.git/blob - src/test/debuginfo/issue-22656.rs
Rollup merge of #57107 - mjbshaw:thread_local_test, r=nikomatsakis
[rust.git] / src / test / debuginfo / issue-22656.rs
1 // This test makes sure that the LLDB pretty printer does not throw an exception
2 // when trying to handle a Vec<> or anything else that contains zero-sized
3 // fields.
4
5 // min-lldb-version: 310
6 // ignore-gdb
7 // ignore-tidy-linelength
8
9 // compile-flags:-g
10
11 // === LLDB TESTS ==================================================================================
12 // lldb-command:run
13
14 // lldb-command:print v
15 // lldbg-check:[...]$0 = vec![1, 2, 3]
16 // lldbr-check:(alloc::vec::Vec<i32>) v = vec![1, 2, 3]
17 // lldb-command:print zs
18 // lldbg-check:[...]$1 = StructWithZeroSizedField { x: ZeroSizedStruct, y: 123, z: ZeroSizedStruct, w: 456 }
19 // lldbr-check:(issue_22656::StructWithZeroSizedField) zs = StructWithZeroSizedField { x: ZeroSizedStruct { }, y: 123, z: ZeroSizedStruct { }, w: 456 }
20 // lldbr-command:continue
21
22 #![allow(unused_variables)]
23 #![allow(dead_code)]
24 #![feature(omit_gdb_pretty_printer_section)]
25 #![omit_gdb_pretty_printer_section]
26
27 struct ZeroSizedStruct;
28
29 struct StructWithZeroSizedField {
30     x: ZeroSizedStruct,
31     y: u32,
32     z: ZeroSizedStruct,
33     w: u64
34 }
35
36 fn main() {
37     let v = vec![1,2,3];
38
39     let zs = StructWithZeroSizedField {
40         x: ZeroSizedStruct,
41         y: 123,
42         z: ZeroSizedStruct,
43         w: 456
44     };
45
46     zzz(); // #break
47 }
48
49 fn zzz() { () }