]> granicus.if.org Git - clang/commitdiff
Fix MSVC Visualization for TemplateTypeParmType and TemplateTypeParmDecl
authorMike Spertus <mike@spertus.com>
Sat, 5 Jan 2019 23:15:30 +0000 (23:15 +0000)
committerMike Spertus <mike@spertus.com>
Sat, 5 Jan 2019 23:15:30 +0000 (23:15 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@350482 91177308-0d34-0410-b5e6-96231b3b80d8

utils/ClangVisualizers/clang.natvis

index a581a0d068f8a0a724b2632ce9d0b52414158c0b..dad00c56182c4011db2f17f8254af68e4b835ddb 100644 (file)
@@ -57,14 +57,13 @@ For later versions of Visual Studio, no setup is required-->
       No TypeBits set beyond TypeClass\r
     </DisplayString>\r
     <DisplayString IncludeView="flags">\r
-    {*this, view(Dependent)}{*this, view(InstantiationDependent)}{*this, view(VariablyModified)}\r
-    {*this, view(ContainsUnexpandedParameterPack)}{*this, view(Cache)}{*this, view(FromAST)}</DisplayString>\r
+{*this, view(Dependent)}{*this, view(InstantiationDependent)}{*this, view(VariablyModified)}\r
+{*this, view(ContainsUnexpandedParameterPack)}{*this, view(Cache)}{*this, view(FromAST)}</DisplayString>\r
     <DisplayString>{*this,view(cmn)}  {{{*this,view(poly)}}}</DisplayString>\r
     <Expand>\r
       <Item Name="TypeClass" IncludeView="cmn">(clang::Type::TypeClass)TypeBits.TC</Item>\r
       <Item Name="Flags" IncludeView="cmn">*this,view(flags)</Item>\r
       <Item Name="Canonical" IncludeView="cmn">CanonicalType</Item>\r
-      <Item Name="isCanonicalUnqualified" IncludeView="cmn">CanonicalType.Value.Value == this</Item>\r
       <ExpandedItem ExcludeView="cmn" Condition="TypeBits.TC==clang::Type::TypeClass::Builtin">*(clang::BuiltinType *)this</ExpandedItem>\r
       <ExpandedItem ExcludeView="cmn" Condition="TypeBits.TC==clang::Type::TypeClass::Pointer">*(clang::PointerType *)this</ExpandedItem>\r
       <ExpandedItem ExcludeView="cmn" Condition="TypeBits.TC==clang::Type::TypeClass::LValueReference">*(clang::LValueReferenceType *)this</ExpandedItem>\r
@@ -142,8 +141,9 @@ For later versions of Visual Studio, no setup is required-->
   <Type Name="clang::TemplateTypeParmDecl">\r
     <DisplayString IncludeView="TorC" Condition="Typename">typename</DisplayString>\r
     <DisplayString IncludeView="TorC" Condition="!Typename">class</DisplayString>\r
-    <DisplayString IncludeView="MaybeEllipses" Condition="((TemplateTypeParmType *)TypeForDecl)->CanTTPTInfo.ParameterPack">...</DisplayString>\r
-    <DisplayString IncludeView="MaybeEllipses" Condition="!((TemplateTypeParmType *)TypeForDecl)->CanTTPTInfo.ParameterPack"></DisplayString>\r
+    <DisplayString IncludeView="MaybeEllipses" Condition="TypeForDecl == nullptr">(not yet known if parameter pack) </DisplayString>\r
+    <DisplayString IncludeView="MaybeEllipses" Condition="((TemplateTypeParmType *)(((clang::ExtQualsTypeCommonBase *)(((uintptr_t)TypeForDecl->CanonicalType.Value.Value) &amp; ~(uintptr_t)((1 &lt;&lt; 4) - 1)))-&gt;BaseType))->CanTTPTInfo.ParameterPack">...</DisplayString>\r
+    <DisplayString IncludeView="MaybeEllipses" Condition="!((TemplateTypeParmType *)(((clang::ExtQualsTypeCommonBase *)(((uintptr_t)TypeForDecl->CanonicalType.Value.Value) &amp; ~(uintptr_t)((1 &lt;&lt; 4) - 1)))-&gt;BaseType))->CanTTPTInfo.ParameterPack"></DisplayString>\r
     <DisplayString>{*this,view(TorC)} {*this,view(MaybeEllipses)}{Name,view(cpp)}</DisplayString> \r
   </Type>\r
   <Type Name="clang::TemplateDecl">\r
@@ -227,8 +227,10 @@ For later versions of Visual Studio, no setup is required-->
     </Expand>\r
   </Type>\r
   <Type Name="clang::TemplateTypeParmType">\r
-    <DisplayString IncludeView="cpp">{*TTPDecl,view(cpp)}</DisplayString>\r
-    <DisplayString>{*TTPDecl}</DisplayString>\r
+    <DisplayString Condition="CanonicalType.Value.Value != this">Non-canonical: {*TTPDecl}</DisplayString>\r
+    <DisplayString>Canonical: {CanTTPTInfo}</DisplayString>\r
+    <Expand>\r
+    </Expand>\r
   </Type>\r
   <Type Name="clang::InjectedClassNameType">\r
     <DisplayString>{*Decl,view(cpp)}</DisplayString>\r
@@ -261,6 +263,7 @@ For later versions of Visual Studio, no setup is required-->
     <DisplayString IncludeView="fastQuals" Condition="(Value.Value &amp; 15)==6">{" ",sb}volatile restrict</DisplayString>\r
     <DisplayString IncludeView="fastQuals" Condition="(Value.Value &amp; 15)==7">{" ",sb}const volatile restrict</DisplayString>\r
     <DisplayString IncludeView="fastQuals">Cannot visualize non-fast qualifiers</DisplayString>\r
+    <DisplayString Condition="(uintptr_t)Value.Value == 0">Null</DisplayString>\r
     <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