Skip to content

Commit 07f1e61

Browse files
committed
Add natvis for NonZero and Wrapping types
1 parent 0deb536 commit 07f1e61

File tree

2 files changed

+183
-0
lines changed

2 files changed

+183
-0
lines changed

src/etc/natvis/libcore.natvis

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,46 @@
11
<?xml version="1.0" encoding="utf-8"?>
22
<AutoVisualizer xmlns="http://schemas.microsoft.com/vstudio/debugger/natvis/2010">
3+
<Type Name="core::num::nonzero::NonZeroI8">
4+
<DisplayString>{__0}</DisplayString>
5+
</Type>
6+
<Type Name="core::num::nonzero::NonZeroI16">
7+
<DisplayString>{__0}</DisplayString>
8+
</Type>
9+
<Type Name="core::num::nonzero::NonZeroI32">
10+
<DisplayString>{__0}</DisplayString>
11+
</Type>
12+
<Type Name="core::num::nonzero::NonZeroI64">
13+
<DisplayString>{__0}</DisplayString>
14+
</Type>
15+
<Type Name="core::num::nonzero::NonZeroI128">
16+
<DisplayString>{__0}</DisplayString>
17+
</Type>
18+
<Type Name="core::num::nonzero::NonZeroIsize">
19+
<DisplayString>{__0}</DisplayString>
20+
</Type>
21+
<Type Name="core::num::nonzero::NonZeroU8">
22+
<DisplayString>{__0}</DisplayString>
23+
</Type>
24+
<Type Name="core::num::nonzero::NonZeroU16">
25+
<DisplayString>{__0}</DisplayString>
26+
</Type>
27+
<Type Name="core::num::nonzero::NonZeroU32">
28+
<DisplayString>{__0}</DisplayString>
29+
</Type>
30+
<Type Name="core::num::nonzero::NonZeroU64">
31+
<DisplayString>{__0}</DisplayString>
32+
</Type>
33+
<Type Name="core::num::nonzero::NonZeroU128">
34+
<DisplayString>{__0}</DisplayString>
35+
</Type>
36+
<Type Name="core::num::nonzero::NonZeroUsize">
37+
<DisplayString>{__0}</DisplayString>
38+
</Type>
39+
40+
<Type Name="core::num::wrapping::Wrapping&lt;*&gt;">
41+
<DisplayString>{__0}</DisplayString>
42+
</Type>
43+
344
<Type Name="core::ptr::Unique&lt;*&gt;">
445
<DisplayString>{{ Unique {pointer} }}</DisplayString>
546
<Expand>

src/test/debuginfo/numeric-types.rs

Lines changed: 142 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,142 @@
1+
// only-cdb
2+
// compile-flags:-g
3+
4+
// Tests the visualizations for `NonZero{I,U}{8,16,32,64,128,size}` and `Wrapping<T>` in
5+
// `libcore.natvis`.
6+
7+
// === CDB TESTS ==================================================================================
8+
// cdb-command: g
9+
10+
// cdb-command: dx nz_i8
11+
// cdb-check:nz_i8 : 11 [Type: core::num::nonzero::NonZeroI8]
12+
// cdb-check: [<Raw View>] [Type: core::num::nonzero::NonZeroI8]
13+
14+
// cdb-command: dx nz_i16
15+
// cdb-check:nz_i16 : 22 [Type: core::num::nonzero::NonZeroI16]
16+
// cdb-check: [<Raw View>] [Type: core::num::nonzero::NonZeroI16]
17+
18+
// cdb-command: dx nz_i32
19+
// cdb-check:nz_i32 : 33 [Type: core::num::nonzero::NonZeroI32]
20+
// cdb-check: [<Raw View>] [Type: core::num::nonzero::NonZeroI32]
21+
22+
// cdb-command: dx nz_i64
23+
// cdb-check:nz_i64 : 44 [Type: core::num::nonzero::NonZeroI64]
24+
// cdb-check: [<Raw View>] [Type: core::num::nonzero::NonZeroI64]
25+
26+
// 128-bit integers don't seem to work in CDB
27+
// cdb-command: dx nz_i128
28+
// cdb-check: [<Raw View>] [Type: core::num::nonzero::NonZeroI128]
29+
30+
// cdb-command: dx nz_isize
31+
// cdb-check:nz_isize : 66 [Type: core::num::nonzero::NonZeroIsize]
32+
// cdb-check: [<Raw View>] [Type: core::num::nonzero::NonZeroIsize]
33+
34+
// cdb-command: dx nz_u8
35+
// cdb-check:nz_u8 : 0x4d [Type: core::num::nonzero::NonZeroU8]
36+
// cdb-check: [<Raw View>] [Type: core::num::nonzero::NonZeroU8]
37+
38+
// cdb-command: dx nz_u16
39+
// cdb-check:nz_u16 : 0x58 [Type: core::num::nonzero::NonZeroU16]
40+
// cdb-check: [<Raw View>] [Type: core::num::nonzero::NonZeroU16]
41+
42+
// cdb-command: dx nz_u32
43+
// cdb-check:nz_u32 : 0x63 [Type: core::num::nonzero::NonZeroU32]
44+
// cdb-check: [<Raw View>] [Type: core::num::nonzero::NonZeroU32]
45+
46+
// cdb-command: dx nz_u64
47+
// cdb-check:nz_u64 : 0x64 [Type: core::num::nonzero::NonZeroU64]
48+
// cdb-check: [<Raw View>] [Type: core::num::nonzero::NonZeroU64]
49+
50+
// 128-bit integers don't seem to work in CDB
51+
// cdb-command: dx nz_u128
52+
// cdb-check: [<Raw View>] [Type: core::num::nonzero::NonZeroU128]
53+
54+
// cdb-command: dx nz_usize
55+
// cdb-check:nz_usize : 0x7a [Type: core::num::nonzero::NonZeroUsize]
56+
// cdb-check: [<Raw View>] [Type: core::num::nonzero::NonZeroUsize]
57+
58+
// cdb-command: dx w_i8
59+
// cdb-check:w_i8 : 10 [Type: core::num::wrapping::Wrapping<i8>]
60+
// cdb-check: [<Raw View>] [Type: core::num::wrapping::Wrapping<i8>]
61+
62+
// cdb-command: dx w_i16
63+
// cdb-check:w_i16 : 20 [Type: core::num::wrapping::Wrapping<i16>]
64+
// cdb-check: [<Raw View>] [Type: core::num::wrapping::Wrapping<i16>]
65+
66+
// cdb-command: dx w_i32
67+
// cdb-check:w_i32 : 30 [Type: core::num::wrapping::Wrapping<i32>]
68+
// cdb-check: [<Raw View>] [Type: core::num::wrapping::Wrapping<i32>]
69+
70+
// cdb-command: dx w_i64
71+
// cdb-check:w_i64 : 40 [Type: core::num::wrapping::Wrapping<i64>]
72+
// cdb-check: [<Raw View>] [Type: core::num::wrapping::Wrapping<i64>]
73+
74+
// 128-bit integers don't seem to work in CDB
75+
// cdb-command: dx w_i128
76+
// cdb-check:w_i128 [Type: core::num::wrapping::Wrapping<i128>]
77+
// cdb-check: [<Raw View>] [Type: core::num::wrapping::Wrapping<i128>]
78+
79+
// cdb-command: dx w_isize
80+
// cdb-check:w_isize : 60 [Type: core::num::wrapping::Wrapping<isize>]
81+
// cdb-check: [<Raw View>] [Type: core::num::wrapping::Wrapping<isize>]
82+
83+
// cdb-command: dx w_u8
84+
// cdb-check:w_u8 : 0x46 [Type: core::num::wrapping::Wrapping<u8>]
85+
// cdb-check: [<Raw View>] [Type: core::num::wrapping::Wrapping<u8>]
86+
87+
// cdb-command: dx w_u16
88+
// cdb-check:w_u16 : 0x50 [Type: core::num::wrapping::Wrapping<u16>]
89+
// cdb-check: [<Raw View>] [Type: core::num::wrapping::Wrapping<u16>]
90+
91+
// cdb-command: dx w_u32
92+
// cdb-check:w_u32 : 0x5a [Type: core::num::wrapping::Wrapping<u32>]
93+
// cdb-check: [<Raw View>] [Type: core::num::wrapping::Wrapping<u32>]
94+
95+
// cdb-command: dx w_u64
96+
// cdb-check:w_u64 : 0x64 [Type: core::num::wrapping::Wrapping<u64>]
97+
// cdb-check: [<Raw View>] [Type: core::num::wrapping::Wrapping<u64>]
98+
99+
// 128-bit integers don't seem to work in CDB
100+
// cdb-command: dx w_u128
101+
// cdb-check:w_u128 [Type: core::num::wrapping::Wrapping<u128>]
102+
// cdb-check: [<Raw View>] [Type: core::num::wrapping::Wrapping<u128>]
103+
104+
// cdb-command: dx w_usize
105+
// cdb-check:w_usize : 0x78 [Type: core::num::wrapping::Wrapping<usize>]
106+
// cdb-check: [<Raw View>] [Type: core::num::wrapping::Wrapping<usize>]
107+
108+
use std::num::*;
109+
110+
fn main() {
111+
let nz_i8 = NonZeroI8::new(11).unwrap();
112+
let nz_i16 = NonZeroI16::new(22).unwrap();
113+
let nz_i32 = NonZeroI32::new(33).unwrap();
114+
let nz_i64 = NonZeroI64::new(44).unwrap();
115+
let nz_i128 = NonZeroI128::new(55).unwrap();
116+
let nz_isize = NonZeroIsize::new(66).unwrap();
117+
118+
let nz_u8 = NonZeroU8::new(77).unwrap();
119+
let nz_u16 = NonZeroU16::new(88).unwrap();
120+
let nz_u32 = NonZeroU32::new(99).unwrap();
121+
let nz_u64 = NonZeroU64::new(100).unwrap();
122+
let nz_u128 = NonZeroU128::new(111).unwrap();
123+
let nz_usize = NonZeroUsize::new(122).unwrap();
124+
125+
let w_i8 = Wrapping(10i8);
126+
let w_i16 = Wrapping(20i16);
127+
let w_i32 = Wrapping(30i32);
128+
let w_i64 = Wrapping(40i64);
129+
let w_i128 = Wrapping(50i128);
130+
let w_isize = Wrapping(60isize);
131+
132+
let w_u8 = Wrapping(70u8);
133+
let w_u16 = Wrapping(80u16);
134+
let w_u32 = Wrapping(90u32);
135+
let w_u64 = Wrapping(100u64);
136+
let w_u128 = Wrapping(110u128);
137+
let w_usize = Wrapping(120usize);
138+
139+
zzz(); // #break
140+
}
141+
142+
fn zzz() { }

0 commit comments

Comments
 (0)