Skip to content

Commit 298c31b

Browse files
authored
Rollup merge of #82557 - rylev:natvis-improvements, r=varkor
Add natvis for Result, NonNull, CString, CStr, and Cow This adds natvis support (used for Windows debugging) to the following types: `Result`, `NonNull`, `CString`, `CStr`, and `Cow`.
2 parents 4a4e3e6 + 920e2d8 commit 298c31b

File tree

3 files changed

+51
-0
lines changed

3 files changed

+51
-0
lines changed

src/etc/natvis/liballoc.natvis

+7
Original file line numberDiff line numberDiff line change
@@ -75,4 +75,11 @@
7575
<ExpandedItem>ptr.pointer->data</ExpandedItem>
7676
</Expand>
7777
</Type>
78+
<Type Name="alloc::borrow::Cow&lt;*&gt;">
79+
<DisplayString Condition="RUST$ENUM$DISR == 0x0">Borrowed({__0})</DisplayString>
80+
<DisplayString Condition="RUST$ENUM$DISR == 0x1">Owned({__0})</DisplayString>
81+
<Expand>
82+
<Item Name="[value]" ExcludeView="simple">__0</Item>
83+
</Expand>
84+
</Type>
7885
</AutoVisualizer>

src/etc/natvis/libcore.natvis

+15
Original file line numberDiff line numberDiff line change
@@ -30,4 +30,19 @@
3030
</Expand>
3131
</Type>
3232

33+
<Type Name="core::result::Result&lt;*&gt;">
34+
<DisplayString Condition="RUST$ENUM$DISR == 0x0">Ok({__0})</DisplayString>
35+
<DisplayString Condition="RUST$ENUM$DISR == 0x1">Err({(*($T2*) &amp;__0)})</DisplayString>
36+
<Expand>
37+
<Item Name="[value]" Condition="RUST$ENUM$DISR == 0x0">__0</Item>
38+
<Item Name="[value]" Condition="RUST$ENUM$DISR == 0x1">(*($T2*) &amp;__0)</Item>
39+
</Expand>
40+
</Type>
41+
42+
<Type Name="core::ptr::non_null::NonNull&lt;*&gt;">
43+
<DisplayString>{(void*) pointer}</DisplayString>
44+
<Expand>
45+
<Item Name="[value]">*pointer</Item>
46+
</Expand>
47+
</Type>
3348
</AutoVisualizer>

src/etc/natvis/libstd.natvis

+29
Original file line numberDiff line numberDiff line change
@@ -72,4 +72,33 @@
7272
</CustomListItems>
7373
</Expand>
7474
</Type>
75+
76+
<Type Name="std::ffi::c_str::CString">
77+
<DisplayString>{inner.data_ptr,s}</DisplayString>
78+
<Expand>
79+
<Synthetic Name="[chars]">
80+
<Expand>
81+
<ArrayItems>
82+
<Size>inner.length</Size>
83+
<ValuePointer>(char*)inner.data_ptr</ValuePointer>
84+
</ArrayItems>
85+
</Expand>
86+
</Synthetic>
87+
</Expand>
88+
</Type>
89+
90+
<Type Name="std::ffi::c_str::CStr">
91+
<DisplayString>{(char*) inner}</DisplayString>
92+
<Expand>
93+
<Synthetic Name="[chars]">
94+
<DisplayString>{(char*) inner}</DisplayString>
95+
<Expand>
96+
<ArrayItems>
97+
<Size>strlen((char *) inner) + 1</Size>
98+
<ValuePointer>(char*)inner</ValuePointer>
99+
</ArrayItems>
100+
</Expand>
101+
</Synthetic>
102+
</Expand>
103+
</Type>
75104
</AutoVisualizer>

0 commit comments

Comments
 (0)