Improved Visual Studio visualization of OpaquePtr
Create a special visualizer for OpaquePtr<QualType> because the
standard visualizer doesn't work with OpaquePtr<QualType>
due to QualType being heavily dependent on traits to be pointer-like.
Also, created an identical visualizer for UnionOpaquePtr
llvm-svn: 272531
diff --git a/clang/utils/ClangVisualizers/clang.natvis b/clang/utils/ClangVisualizers/clang.natvis
index 83c00b2..6e3ca96f 100644
--- a/clang/utils/ClangVisualizers/clang.natvis
+++ b/clang/utils/ClangVisualizers/clang.natvis
@@ -485,12 +485,30 @@
<ExpandedItem>*(clang::Type *)this, view(cmn)</ExpandedItem>
</Expand>
</Type>
+ <Type Name="clang::OpaquePtr<clang::QualType>">
+ <DisplayString>{*(clang::QualType *)this}</DisplayString>
+ <Expand>
+ <Item Name="Ptr">*(clang::QualType *)this</Item>
+ </Expand>
+ </Type>
+ <Type Name="clang::UnionOpaquePtr<clang::QualType>">
+ <DisplayString>{*(clang::QualType *)this}</DisplayString>
+ <Expand>
+ <Item Name="Ptr">*(clang::QualType *)this</Item>
+ </Expand>
+ </Type>
<Type Name="clang::OpaquePtr<*>">
<DisplayString>{($T1 *)Ptr}</DisplayString>
<Expand>
<ExpandedItem>($T1 *)Ptr</ExpandedItem>
</Expand>
</Type>
+ <Type Name="clang::UnionOpaquePtr<*>">
+ <DisplayString>{($T1 *)Ptr}</DisplayString>
+ <Expand>
+ <ExpandedItem>($T1 *)Ptr</ExpandedItem>
+ </Expand>
+ </Type>
<Type Name="clang::TemplateParameterList">
<DisplayString IncludeView="parm0" Condition="NumParams==0"></DisplayString>
<DisplayString IncludeView="parm0">{*((NamedDecl **)(this+1))[0],view(cpp)}{*this,view(parm1)}</DisplayString>