aboutsummaryrefslogtreecommitdiff
path: root/utils
diff options
context:
space:
mode:
authorMike Spertus <mike@spertus.com>2019-01-06 04:58:48 +0000
committerMike Spertus <mike@spertus.com>2019-01-06 04:58:48 +0000
commit6d5c059076455da0429f6ba4f11d3185c65ef362 (patch)
treef7b2c609e4ec0cc9218806677656a88328f9ab85 /utils
parentace6bcb7b9f4114b051d3c70d0f3f92c4099959f (diff)
Have MSVC Visualizer for DeducedTemplateSpecializationType show both the original template and deduced specialization
Now appears in the Autos window something like - MyType DeducedTemplateSpecializationType {struct Y<int>} |- Template template<typename T> struct Y; |- Deduced As struct Y<int> |- isDeduced true bool |- TypeClass DeducedTemplateSpecialization (36) |- Flags No TypeBits set beyond TypeClass |- Canonical RecordType {struct Y<int>} Also changed QualType visualization to auto-expand the BaseType git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@350487 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'utils')
-rw-r--r--utils/ClangVisualizers/clang.natvis37
1 files changed, 24 insertions, 13 deletions
diff --git a/utils/ClangVisualizers/clang.natvis b/utils/ClangVisualizers/clang.natvis
index dad00c5618..17556f9cab 100644
--- a/utils/ClangVisualizers/clang.natvis
+++ b/utils/ClangVisualizers/clang.natvis
@@ -40,16 +40,16 @@ For later versions of Visual Studio, no setup is required-->
<DisplayString Condition="TypeBits.TC==clang::LocInfoType::LocInfo" IncludeView="poly">{*(clang::LocInfoType *)this}</DisplayString>
<DisplayString IncludeView="cpp">{*this,view(poly)}</DisplayString>
<DisplayString IncludeView="poly">No visualizer yet for {(clang::Type::TypeClass)TypeBits.TC,en}Type</DisplayString> <!-- Not yet implemented Type subclass -->
- <DisplayString IncludeView="Dependent" Condition="TypeBits.Dependent">Dependent</DisplayString>
+ <DisplayString IncludeView="Dependent" Condition="TypeBits.Dependent">Dependent{" ",sb}</DisplayString>
<DisplayString IncludeView="Dependent"></DisplayString>
- <DisplayString IncludeView="InstantiationDependent" Condition="TypeBits.InstantiationDependent">InstantiationDependent</DisplayString>
+ <DisplayString IncludeView="InstantiationDependent" Condition="TypeBits.InstantiationDependent">InstantiationDependent{" ",sb}</DisplayString>
<DisplayString IncludeView="InstantiationDependent"></DisplayString>
- <DisplayString IncludeView="VariablyModified" Condition="TypeBits.VariablyModified">VariablyModified</DisplayString>
+ <DisplayString IncludeView="VariablyModified" Condition="TypeBits.VariablyModified">VariablyModified{" ",sb}</DisplayString>
<DisplayString IncludeView="VariablyModified"></DisplayString>
- <DisplayString IncludeView="ContainsUnexpandedParameterPack" Condition="TypeBits.ContainsUnexpandedParameterPack">ContainsUnexpandedParameterPack</DisplayString>
+ <DisplayString IncludeView="ContainsUnexpandedParameterPack" Condition="TypeBits.ContainsUnexpandedParameterPack">ContainsUnexpandedParameterPack{" ",sb}</DisplayString>
<DisplayString IncludeView="ContainsUnexpandedParameterPack"></DisplayString>
<DisplayString IncludeView="Cache" Condition="TypeBits.CacheValid &amp;&amp; TypeBits.CachedLocalOrUnnamed">CachedLinkage: {(clang::Linkage)TypeBits.CachedLinkage,en} CachedLocalOrUnnamed</DisplayString>
- <DisplayString IncludeView="Cache" Condition="TypeBits.CacheValid &amp;&amp; !TypeBits.CachedLocalOrUnnamed">CachedLinkage: {(clang::Linkage)TypeBits.CachedLinkage,en}</DisplayString>
+ <DisplayString IncludeView="Cache" Condition="TypeBits.CacheValid &amp;&amp; !TypeBits.CachedLocalOrUnnamed">CachedLinkage: {(clang::Linkage)TypeBits.CachedLinkage,en}{" ",sb}</DisplayString>
<DisplayString IncludeView="Cache"></DisplayString>
<DisplayString IncludeView="FromAST" Condition="TypeBits.FromAST">FromAST</DisplayString>
<DisplayString IncludeView="FromAST"></DisplayString>
@@ -162,13 +162,13 @@ For later versions of Visual Studio, no setup is required-->
<Type Name="clang::TagDecl">
<DisplayString IncludeView="implicit" Condition="Implicit">implicit{" ",sb}</DisplayString>
<DisplayString IncludeView="implicit"></DisplayString>
- <DisplayString IncludeView="modifiers">{*this,view(implicit)}</DisplayString>
+ <DisplayString IncludeView="modifiers">{*this,view(implicit)nd}</DisplayString>
<DisplayString IncludeView="cpp">{*this,view(modifiers)}{Name,view(cpp)}</DisplayString>
- <DisplayString Condition="TagDeclBits.TagDeclKind==clang::TagTypeKind::TTK_Struct">{*this,view(modifiers)}struct {Name,view(cpp)}</DisplayString>
- <DisplayString Condition="TagDeclBits.TagDeclKind==clang::TagTypeKind::TTK_Interface">{*this,view(modifiers)}interface {Name,view(cpp)}</DisplayString>
- <DisplayString Condition="TagDeclBits.TagDeclKind==clang::TagTypeKind::TTK_Union">{*this,view(modifiers)}union {Name,view(cpp)}</DisplayString>
- <DisplayString Condition="TagDeclBits.TagDeclKind==clang::TagTypeKind::TTK_Class">{*this,view(modifiers)}class {Name,view(cpp)}</DisplayString>
- <DisplayString Condition="TagDeclBits.TagDeclKind==clang::TagTypeKind::TTK_Enum">{*this,view(modifiers)}enum {Name,view(cpp)}</DisplayString>
+ <DisplayString Condition="TagDeclBits.TagDeclKind==clang::TagTypeKind::TTK_Struct">{*this,view(modifiers)nd}struct {Name,view(cpp)}</DisplayString>
+ <DisplayString Condition="TagDeclBits.TagDeclKind==clang::TagTypeKind::TTK_Interface">{*this,view(modifiers)nd}interface {Name,view(cpp)}</DisplayString>
+ <DisplayString Condition="TagDeclBits.TagDeclKind==clang::TagTypeKind::TTK_Union">{*this,view(modifiers)nd}union {Name,view(cpp)}</DisplayString>
+ <DisplayString Condition="TagDeclBits.TagDeclKind==clang::TagTypeKind::TTK_Class">{*this,view(modifiers)nd}class {Name,view(cpp)}</DisplayString>
+ <DisplayString Condition="TagDeclBits.TagDeclKind==clang::TagTypeKind::TTK_Enum">{*this,view(modifiers)nd}enum {Name,view(cpp)}</DisplayString>
<Expand>
<ExpandedItem>(clang::DeclContext *)this</ExpandedItem>
</Expand>
@@ -227,6 +227,7 @@ For later versions of Visual Studio, no setup is required-->
</Expand>
</Type>
<Type Name="clang::TemplateTypeParmType">
+ <DisplayString IncludeView="cpp" Condition="CanonicalType.Value.Value != this">{*TTPDecl}</DisplayString>
<DisplayString Condition="CanonicalType.Value.Value != this">Non-canonical: {*TTPDecl}</DisplayString>
<DisplayString>Canonical: {CanTTPTInfo}</DisplayString>
<Expand>
@@ -267,7 +268,7 @@ For later versions of Visual Studio, no setup is required-->
<DisplayString>{*((clang::ExtQualsTypeCommonBase *)(((uintptr_t)Value.Value) &amp; ~(uintptr_t)((1 &lt;&lt; 4) - 1)))-&gt;BaseType}{*this,view(fastQuals)}</DisplayString>
<Expand>
<Item Name="Fast Quals">*this,view(fastQuals)</Item>
- <Item Name="BaseType">*((clang::ExtQualsTypeCommonBase *)(((uintptr_t)Value.Value) &amp; ~(uintptr_t)((1 &lt;&lt; 4) - 1)))-&gt;BaseType</Item>
+ <ExpandedItem>*((clang::ExtQualsTypeCommonBase *)(((uintptr_t)Value.Value) &amp; ~(uintptr_t)((1 &lt;&lt; 4) - 1)))-&gt;BaseType</ExpandedItem>
</Expand>
</Type>
<Type Name="clang::LocInfoType">
@@ -419,9 +420,20 @@ For later versions of Visual Studio, no setup is required-->
</Expand>
</Type>
<Type Name="clang::DeducedTemplateSpecializationType">
+ <DisplayString Condition="(CanonicalType.Value.Value != this) || TypeBits.Dependent">{CanonicalType,view(cpp)}</DisplayString>
<DisplayString>{Template}</DisplayString>
<Expand>
+ <Item Name="Template">Template</Item>
+ <Item Name="Deduced As" Condition="(CanonicalType.Value.Value != this) || TypeBits.Dependent">CanonicalType,view(cpp)</Item>
<ExpandedItem>*(clang::DeducedType *)this</ExpandedItem>
+ <Item Name="Template">Template</Item>
+ </Expand>
+ </Type>
+ <Type Name="clang::ClassTemplateSpecializationDecl">
+ <DisplayString>{*(CXXRecordDecl *)this,nd}{*TemplateArgs}</DisplayString>
+ <Expand>
+ <ExpandedItem>(CXXRecordDecl *)this,nd</ExpandedItem>
+ <Item Name="TemplateArgs">TemplateArgs</Item>
</Expand>
</Type>
<Type Name="clang::IdentifierInfo">
@@ -532,7 +544,6 @@ For later versions of Visual Studio, no setup is required-->
</ArrayItems>
</Expand>
</Synthetic>
- <ExpandedItem>*(clang::Type *)this, view(cmn)</ExpandedItem>
</Expand>
</Type>
<Type Name="clang::OpaquePtr&lt;*&gt;">