1 use debugger_test::debugger_test;
2 use smallvec::{smallvec, SmallVec};
3 
4 #[inline(never)]
__break()5 fn __break() {}
6 
7 #[debugger_test(
8     debugger = "cdb",
9     commands = r#"
10 .nvlist
11 dx sv
12 
13 g
14 
15 dx sv
16 
17 g
18 
19 dx sv
20 "#,
21     expected_statements = r#"
22 sv               : { 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 
29 sv               : { 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 
39 sv               : { 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)]
test_debugger_visualizer()51 fn 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