1use debugger_test::debugger_test;
2use smallvec::{smallvec, SmallVec};
3
4#[inline(never)]
5fn __break() {}
6
7#[debugger_test(
8 debugger = "cdb",
9 commands = r#"
10.nvlist
11dx sv
12
13g
14
15dx sv
16
17g
18
19dx sv
20"#,
21 expected_statements = r#"
22sv : { len=0x2 is_inline=true } [Type: smallvec::SmallVec<array$<i32,4> >]
23 [<Raw View>] [Type: smallvec::SmallVec<array$<i32,4> >]
24 [capacity] : 4
25 [len] : 0x2 [Type: unsigned __int64]
26 [0] : 1 [Type: int]
27 [1] : 2 [Type: int]
28
29sv : { len=0x5 is_inline=false } [Type: smallvec::SmallVec<array$<i32,4> >]
30 [<Raw View>] [Type: smallvec::SmallVec<array$<i32,4> >]
31 [capacity] : 0x8 [Type: unsigned __int64]
32 [len] : 0x5 [Type: unsigned __int64]
33 [0] : 5 [Type: int]
34 [1] : 2 [Type: int]
35 [2] : 3 [Type: int]
36 [3] : 4 [Type: int]
37 [4] : 5 [Type: int]
38
39sv : { len=0x5 is_inline=false } [Type: smallvec::SmallVec<array$<i32,4> >]
40 [<Raw View>] [Type: smallvec::SmallVec<array$<i32,4> >]
41 [capacity] : 0x8 [Type: unsigned __int64]
42 [len] : 0x5 [Type: unsigned __int64]
43 [0] : 2 [Type: int]
44 [1] : 3 [Type: int]
45 [2] : 4 [Type: int]
46 [3] : 5 [Type: int]
47 [4] : 5 [Type: int]
48"#
49)]
50#[inline(never)]
51fn test_debugger_visualizer() {
52 // This SmallVec can hold up to 4 items on the stack:
53 let mut sv: SmallVec<[i32; 4]> = smallvec![1, 2];
54 __break();
55
56 // Overfill the SmallVec to move its contents to the heap
57 for i in 3..6 {
58 sv.push(i);
59 }
60
61 // Update the contents of the first value of the SmallVec.
62 sv[0] = sv[1] + sv[2];
63 __break();
64
65 // Sort the SmallVec in place.
66 sv.sort();
67 __break();
68}
69