]> granicus.if.org Git - clang/commitdiff
Have MSVC Visualizer for DeducedTemplateSpecializationType show both the original...
authorMike Spertus <mike@spertus.com>
Sun, 6 Jan 2019 04:58:48 +0000 (04:58 +0000)
committerMike Spertus <mike@spertus.com>
Sun, 6 Jan 2019 04:58:48 +0000 (04:58 +0000)
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

utils/ClangVisualizers/clang.natvis

index dad00c56182c4011db2f17f8254af68e4b835ddb..17556f9cabb1df5ab577102eab3dfabcc7eb4bbf 100644 (file)
@@ -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>\r
     <DisplayString IncludeView="cpp">{*this,view(poly)}</DisplayString>\r
     <DisplayString IncludeView="poly">No visualizer yet for {(clang::Type::TypeClass)TypeBits.TC,en}Type</DisplayString> <!-- Not yet implemented Type subclass -->\r
-    <DisplayString IncludeView="Dependent" Condition="TypeBits.Dependent">Dependent</DisplayString>\r
+    <DisplayString IncludeView="Dependent" Condition="TypeBits.Dependent">Dependent{" ",sb}</DisplayString>\r
     <DisplayString IncludeView="Dependent"></DisplayString>\r
-    <DisplayString IncludeView="InstantiationDependent" Condition="TypeBits.InstantiationDependent">InstantiationDependent</DisplayString>\r
+    <DisplayString IncludeView="InstantiationDependent" Condition="TypeBits.InstantiationDependent">InstantiationDependent{" ",sb}</DisplayString>\r
     <DisplayString IncludeView="InstantiationDependent"></DisplayString>\r
-    <DisplayString IncludeView="VariablyModified" Condition="TypeBits.VariablyModified">VariablyModified</DisplayString>\r
+    <DisplayString IncludeView="VariablyModified" Condition="TypeBits.VariablyModified">VariablyModified{" ",sb}</DisplayString>\r
     <DisplayString IncludeView="VariablyModified"></DisplayString>\r
-    <DisplayString IncludeView="ContainsUnexpandedParameterPack" Condition="TypeBits.ContainsUnexpandedParameterPack">ContainsUnexpandedParameterPack</DisplayString>\r
+    <DisplayString IncludeView="ContainsUnexpandedParameterPack" Condition="TypeBits.ContainsUnexpandedParameterPack">ContainsUnexpandedParameterPack{" ",sb}</DisplayString>\r
     <DisplayString IncludeView="ContainsUnexpandedParameterPack"></DisplayString>\r
     <DisplayString IncludeView="Cache" Condition="TypeBits.CacheValid &amp;&amp; TypeBits.CachedLocalOrUnnamed">CachedLinkage: {(clang::Linkage)TypeBits.CachedLinkage,en} CachedLocalOrUnnamed</DisplayString>\r
-    <DisplayString IncludeView="Cache" Condition="TypeBits.CacheValid &amp;&amp; !TypeBits.CachedLocalOrUnnamed">CachedLinkage: {(clang::Linkage)TypeBits.CachedLinkage,en}</DisplayString>\r
+    <DisplayString IncludeView="Cache" Condition="TypeBits.CacheValid &amp;&amp; !TypeBits.CachedLocalOrUnnamed">CachedLinkage: {(clang::Linkage)TypeBits.CachedLinkage,en}{" ",sb}</DisplayString>\r
     <DisplayString IncludeView="Cache"></DisplayString>\r
     <DisplayString IncludeView="FromAST" Condition="TypeBits.FromAST">FromAST</DisplayString>\r
     <DisplayString IncludeView="FromAST"></DisplayString>\r
@@ -162,13 +162,13 @@ For later versions of Visual Studio, no setup is required-->
   <Type Name="clang::TagDecl">\r
     <DisplayString IncludeView="implicit" Condition="Implicit">implicit{" ",sb}</DisplayString>\r
     <DisplayString IncludeView="implicit"></DisplayString>\r
-    <DisplayString IncludeView="modifiers">{*this,view(implicit)}</DisplayString>\r
+    <DisplayString IncludeView="modifiers">{*this,view(implicit)nd}</DisplayString>\r
     <DisplayString IncludeView="cpp">{*this,view(modifiers)}{Name,view(cpp)}</DisplayString>\r
-    <DisplayString Condition="TagDeclBits.TagDeclKind==clang::TagTypeKind::TTK_Struct">{*this,view(modifiers)}struct {Name,view(cpp)}</DisplayString>\r
-    <DisplayString Condition="TagDeclBits.TagDeclKind==clang::TagTypeKind::TTK_Interface">{*this,view(modifiers)}interface {Name,view(cpp)}</DisplayString>\r
-    <DisplayString Condition="TagDeclBits.TagDeclKind==clang::TagTypeKind::TTK_Union">{*this,view(modifiers)}union {Name,view(cpp)}</DisplayString>\r
-    <DisplayString Condition="TagDeclBits.TagDeclKind==clang::TagTypeKind::TTK_Class">{*this,view(modifiers)}class {Name,view(cpp)}</DisplayString>\r
-    <DisplayString Condition="TagDeclBits.TagDeclKind==clang::TagTypeKind::TTK_Enum">{*this,view(modifiers)}enum {Name,view(cpp)}</DisplayString>\r
+    <DisplayString Condition="TagDeclBits.TagDeclKind==clang::TagTypeKind::TTK_Struct">{*this,view(modifiers)nd}struct {Name,view(cpp)}</DisplayString>\r
+    <DisplayString Condition="TagDeclBits.TagDeclKind==clang::TagTypeKind::TTK_Interface">{*this,view(modifiers)nd}interface {Name,view(cpp)}</DisplayString>\r
+    <DisplayString Condition="TagDeclBits.TagDeclKind==clang::TagTypeKind::TTK_Union">{*this,view(modifiers)nd}union {Name,view(cpp)}</DisplayString>\r
+    <DisplayString Condition="TagDeclBits.TagDeclKind==clang::TagTypeKind::TTK_Class">{*this,view(modifiers)nd}class {Name,view(cpp)}</DisplayString>\r
+    <DisplayString Condition="TagDeclBits.TagDeclKind==clang::TagTypeKind::TTK_Enum">{*this,view(modifiers)nd}enum {Name,view(cpp)}</DisplayString>\r
     <Expand>\r
       <ExpandedItem>(clang::DeclContext *)this</ExpandedItem>\r
     </Expand>\r
@@ -227,6 +227,7 @@ For later versions of Visual Studio, no setup is required-->
     </Expand>\r
   </Type>\r
   <Type Name="clang::TemplateTypeParmType">\r
+    <DisplayString IncludeView="cpp" Condition="CanonicalType.Value.Value != this">{*TTPDecl}</DisplayString>\r
     <DisplayString Condition="CanonicalType.Value.Value != this">Non-canonical: {*TTPDecl}</DisplayString>\r
     <DisplayString>Canonical: {CanTTPTInfo}</DisplayString>\r
     <Expand>\r
@@ -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>\r
     <Expand>\r
       <Item Name="Fast Quals">*this,view(fastQuals)</Item>\r
-      <Item Name="BaseType">*((clang::ExtQualsTypeCommonBase *)(((uintptr_t)Value.Value) &amp; ~(uintptr_t)((1 &lt;&lt; 4) - 1)))-&gt;BaseType</Item>\r
+      <ExpandedItem>*((clang::ExtQualsTypeCommonBase *)(((uintptr_t)Value.Value) &amp; ~(uintptr_t)((1 &lt;&lt; 4) - 1)))-&gt;BaseType</ExpandedItem>\r
     </Expand>\r
   </Type>\r
   <Type Name="clang::LocInfoType">\r
@@ -419,9 +420,20 @@ For later versions of Visual Studio, no setup is required-->
     </Expand>\r
   </Type>\r
   <Type Name="clang::DeducedTemplateSpecializationType">\r
+    <DisplayString Condition="(CanonicalType.Value.Value != this) || TypeBits.Dependent">{CanonicalType,view(cpp)}</DisplayString>\r
     <DisplayString>{Template}</DisplayString>\r
     <Expand>\r
+      <Item Name="Template">Template</Item>\r
+      <Item Name="Deduced As" Condition="(CanonicalType.Value.Value != this) || TypeBits.Dependent">CanonicalType,view(cpp)</Item>\r
       <ExpandedItem>*(clang::DeducedType *)this</ExpandedItem>\r
+      <Item Name="Template">Template</Item>\r
+    </Expand>\r
+  </Type>\r
+  <Type Name="clang::ClassTemplateSpecializationDecl">\r
+    <DisplayString>{*(CXXRecordDecl *)this,nd}{*TemplateArgs}</DisplayString>\r
+    <Expand>\r
+      <ExpandedItem>(CXXRecordDecl *)this,nd</ExpandedItem>\r
+      <Item Name="TemplateArgs">TemplateArgs</Item>\r
     </Expand>\r
   </Type>\r
   <Type Name="clang::IdentifierInfo">\r
@@ -532,7 +544,6 @@ For later versions of Visual Studio, no setup is required-->
           </ArrayItems>\r
         </Expand>\r
       </Synthetic>\r
-      <ExpandedItem>*(clang::Type *)this, view(cmn)</ExpandedItem>\r
     </Expand>\r
   </Type>\r
   <Type Name="clang::OpaquePtr&lt;*&gt;">\r