Bug 1774290 - Add Visual Studio visualizers for Maybe and Result r=mvollmer DONTBUILD

These types aren't handled very helpfully by Visual Studio's default
visualizer. Fortunately it's not difficult to write custom visualizers
for them.

This does not handle most flavors of `ResultImplementation` -- only the
one that the present author found most immediately useful. Handling them
is not difficult, but merely tedious; they are left to future authors to
deal with as needed.

Differential Revision: https://phabricator.services.mozilla.com/D149320
This commit is contained in:
Ray Kraesig 2022-06-15 16:46:11 +00:00
Родитель 6799a67305
Коммит 227ef619af
1 изменённых файлов: 22 добавлений и 0 удалений

Просмотреть файл

@ -3,6 +3,28 @@
<!-- Mozilla Gecko Visualizers -->
<Type Name="mozilla::Maybe&lt;*&gt;">
<DisplayString Condition="mIsSome == false">Nothing</DisplayString>
<DisplayString Condition="mIsSome == true">Some({*($T1 *)&amp;mStorage.val})</DisplayString>
<Expand>
<ExpandedItem Condition="mIsSome == true">*($T1 *)&amp;mStorage.val</ExpandedItem>
</Expand>
</Type>
<Type Name="mozilla::Result&lt;*,*&gt;">
<DisplayString>{mImpl}</DisplayString>
</Type>
<Type Name="mozilla::detail::ResultImplementation&lt;*,*,mozilla::detail::PackingStrategy::Variant&gt;">
<DisplayString Condition="mStorage.tag == false">ok: {*($T1 *)(mStorage.rawData)}</DisplayString>
<DisplayString Condition="mStorage.tag == true">err: {*($T2 *)(mStorage.rawData)}</DisplayString>
<DisplayString>%% invalid storage tag in variant %%</DisplayString>
<Expand>
<ExpandedItem Condition="mStorage.tag == false">*($T1 *)(mStorage.rawData)</ExpandedItem>
<ExpandedItem Condition="mStorage.tag == true">*($T2 *)(mStorage.rawData)</ExpandedItem>
</Expand>
</Type>
<!-- nsTArray -->
<Type Name="nsTArray&lt;*&gt;">
<DisplayString Condition="mHdr-&gt;mLength == 0 &amp;&amp; mHdr-&gt;mCapacity == 0">empty</DisplayString>