Author: aaronballman
Date: Tue Dec 18 13:42:20 2018
New Revision: 349547

URL: http://llvm.org/viewvc/llvm-project?rev=349547&view=rev
Log:
Fix errors with the Clang natvis file.

This updates the FunctionProtoType visualizer to use the proper bits for 
determining parameter information and the DeclarationName visualizer to use the 
detail namespace. It also adds support for viewing newer special declaration 
names (like deduction guides).

Patch with help of Bruno Ricci.

Modified:
    cfe/trunk/utils/ClangVisualizers/clang.natvis

Modified: cfe/trunk/utils/ClangVisualizers/clang.natvis
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/utils/ClangVisualizers/clang.natvis?rev=349547&r1=349546&r2=349547&view=diff
==============================================================================
--- cfe/trunk/utils/ClangVisualizers/clang.natvis (original)
+++ cfe/trunk/utils/ClangVisualizers/clang.natvis Tue Dec 18 13:42:20 2018
@@ -171,17 +171,17 @@ For later versions of Visual Studio, no
        but the expansion has all parameters -->
   <Type Name="clang::FunctionProtoType">
     <DisplayString IncludeView="retType">{ResultType,view(cpp)}</DisplayString>
-    <DisplayString IncludeView="parm0" 
Condition="NumParams==0"></DisplayString>
+    <DisplayString IncludeView="parm0" 
Condition="FunctionTypeBits.NumParams==0"></DisplayString>
     <DisplayString IncludeView="parm0">{*(clang::QualType 
*)(this+1),view(cpp)}{*this,view(parm1)}</DisplayString>
-    <DisplayString IncludeView="parm1" 
Condition="NumParams==1"></DisplayString>
+    <DisplayString IncludeView="parm1" 
Condition="FunctionTypeBits.NumParams==1"></DisplayString>
     <DisplayString IncludeView="parm1">, {*((clang::QualType 
*)(this+1)+1),view(cpp)}{*this,view(parm2)}</DisplayString>
-    <DisplayString IncludeView="parm2" 
Condition="NumParams==2"></DisplayString>
+    <DisplayString IncludeView="parm2" 
Condition="FunctionTypeBits.NumParams==2"></DisplayString>
     <DisplayString IncludeView="parm2">, {*((clang::QualType 
*)(this+1)+2),view(cpp)}{*this,view(parm3)}</DisplayString>
-    <DisplayString IncludeView="parm3" 
Condition="NumParams==3"></DisplayString>
+    <DisplayString IncludeView="parm3" 
Condition="FunctionTypeBits.NumParams==3"></DisplayString>
     <DisplayString IncludeView="parm3">, {*((clang::QualType 
*)(this+1)+3),view(cpp)}{*this,view(parm4)}</DisplayString>
-    <DisplayString IncludeView="parm4" 
Condition="NumParams==4"></DisplayString>
+    <DisplayString IncludeView="parm4" 
Condition="FunctionTypeBits.NumParams==4"></DisplayString>
     <DisplayString IncludeView="parm4">, {*((clang::QualType 
*)(this+1)+4),view(cpp)}{*this,view(parm5)}</DisplayString>
-    <DisplayString IncludeView="parm5" 
Condition="NumParams==5"></DisplayString>
+    <DisplayString IncludeView="parm5" 
Condition="FunctionTypeBits.NumParams==5"></DisplayString>
     <DisplayString IncludeView="parm5">, /* expand for more params 
*/</DisplayString>
     <DisplayString>{*this,view(retType)}({*this,view(parm0)})</DisplayString>
     <Expand>
@@ -190,7 +190,7 @@ For later versions of Visual Studio, no
         <DisplayString>{*this,view(parm0)}</DisplayString>
         <Expand>
           <ArrayItems>
-            <Size>NumParams</Size>
+            <Size>FunctionTypeBits.NumParams</Size>
             <ValuePointer>(clang::QualType *)(this+1)</ValuePointer>
           </ArrayItems>
         </Expand>
@@ -395,22 +395,29 @@ For later versions of Visual Studio, no
     <DisplayString Condition="(Ptr &amp; PtrMask) == 
StoredIdentifier">{{Identifier ({*(clang::IdentifierInfo *)(Ptr &amp; 
~PtrMask)})}}</DisplayString>
     <DisplayString Condition="(Ptr &amp; PtrMask) == 
StoredObjCZeroArgSelector">{{ObjC Zero Arg Selector (*{(clang::IdentifierInfo 
*)(Ptr &amp; ~PtrMask)})}}</DisplayString>
     <DisplayString Condition="(Ptr &amp; PtrMask) == 
StoredObjCOneArgSelector">{{ObjC One Arg Selector (*{(clang::IdentifierInfo 
*)(Ptr &amp; ~PtrMask)})}}</DisplayString>
+    <DisplayString Condition="(Ptr &amp; PtrMask) == 
StoredCXXConstructorName">C++ Constructor 
{{*(clang::detail::CXXSpecialNameExtra *)(Ptr &amp; ~PtrMask)}}</DisplayString>
+    <DisplayString Condition="(Ptr &amp; PtrMask) == 
StoredCXXDestructorName">C++ Destructor {{*(clang::detail::CXXSpecialNameExtra 
*)(Ptr &amp; ~PtrMask)}}</DisplayString>
+    <DisplayString Condition="(Ptr &amp; PtrMask) == 
StoredCXXConversionFunctionName">C++ Conversion function 
{{*(clang::detail::CXXSpecialNameExtra *)(Ptr &amp; ~PtrMask)}}</DisplayString>
+    <DisplayString Condition="(Ptr &amp; PtrMask) == 
StoredCXXOperatorName">C++ Operator {{*(clang::detail::CXXOperatorIdName *)(Ptr 
&amp; ~PtrMask)}}</DisplayString>    
     <DisplayString Condition="(Ptr &amp; PtrMask) == 
StoredDeclarationNameExtra"
-                   IncludeView="cpp">{*(clang::DeclarationNameExtra *)(Ptr 
&amp; ~PtrMask),view(cpp)}</DisplayString>
-    <DisplayString Condition="(Ptr &amp; PtrMask) == 
StoredDeclarationNameExtra">{{Extra ({*(clang::DeclarationNameExtra *)(Ptr 
&amp; ~PtrMask)})}}</DisplayString>
+                   IncludeView="cpp">{*(clang::detail::DeclarationNameExtra 
*)(Ptr &amp; ~PtrMask),view(cpp)}</DisplayString>
+    <DisplayString Condition="(Ptr &amp; PtrMask) == 
StoredDeclarationNameExtra">{{Extra ({*(clang::detail::DeclarationNameExtra 
*)(Ptr &amp; ~PtrMask)})}}</DisplayString>
     <Expand>
       <Item Condition="(Ptr &amp; PtrMask) == StoredIdentifier" 
Name="[Identifier]">*(clang::IdentifierInfo *)(Ptr &amp; ~PtrMask)</Item>
       <Item Condition="(Ptr &amp; PtrMask) == StoredObjCZeroArgSelector" 
Name="[ObjC Zero Arg Selector]">*(clang::IdentifierInfo *)(Ptr &amp; 
~PtrMask)</Item>
       <Item Condition="(Ptr &amp; PtrMask) == StoredObjCOneArgSelector" 
Name="[ObjC One Arg Selector]">*(clang::IdentifierInfo *)(Ptr &amp; 
~PtrMask)</Item>
-      <Item Condition="(Ptr &amp; PtrMask) == StoredDeclarationNameExtra" 
Name="[Extra]">(clang::DeclarationNameExtra *)(Ptr &amp; ~PtrMask)</Item>
+      <Item Condition="(Ptr &amp; PtrMask) == StoredCXXConstructorName" 
Name="[C++ Constructor]">*(clang::detail::CXXSpecialNameExtra *)(Ptr &amp; 
~PtrMask)</Item>
+      <Item Condition="(Ptr &amp; PtrMask) == StoredCXXDestructorName" 
Name="[C++ Destructor]">*(clang::detail::CXXSpecialNameExtra *)(Ptr &amp; 
~PtrMask)</Item>
+      <Item Condition="(Ptr &amp; PtrMask) == StoredCXXConversionFunctionName" 
Name="[C++ Conversion function]">*(clang::detail::CXXSpecialNameExtra *)(Ptr 
&amp; ~PtrMask)</Item>
+      <Item Condition="(Ptr &amp; PtrMask) == StoredCXXOperatorName" 
Name="[C++ Operator]">*(clang::detail::CXXOperatorIdName *)(Ptr &amp; 
~PtrMask)</Item>      
+      <Item Condition="(Ptr &amp; PtrMask) == StoredDeclarationNameExtra" 
Name="[Extra]">(clang::detail::DeclarationNameExtra *)(Ptr &amp; 
~PtrMask)</Item>
     </Expand>
   </Type>
-  <Type Name="clang::DeclarationNameExtra">
-    <DisplayString IncludeView="cpp"
-                   Condition="ExtraKindOrNumArgs &gt;= 
clang::DeclarationNameExtra::CXXConstructor 
-                   &amp;&amp; ExtraKindOrNumArgs &lt;= 
clang::DeclarationNameExtra::CXXConversionFunction"
-                   >{((clang::CXXSpecialName 
*)this)-&gt;Type,view(cpp)}</DisplayString>
-    
<DisplayString>{(clang::DeclarationNameExtra::ExtraKind)ExtraKindOrNumArgs,en}{"
  ",sb}{*this,view(cpp)}</DisplayString>
+  <Type Name="clang::detail::DeclarationNameExtra">
+    <DisplayString Condition="ExtraKindOrNumArgs == CXXDeductionGuideName">C++ 
Deduction guide</DisplayString>
+    <DisplayString Condition="ExtraKindOrNumArgs == 
CXXLiteralOperatorName">C++ Literal operator</DisplayString>
+    <DisplayString Condition="ExtraKindOrNumArgs == CXXUsingDirective">C++ 
Using directive</DisplayString>  
+    
<DisplayString>{(clang::detail::DeclarationNameExtra::ExtraKind)ExtraKindOrNumArgs,en}{"
  ",sb}{*this,view(cpp)}</DisplayString>
   </Type>
   <Type Name="clang::Token">
     <DisplayString Condition="Kind != 
clang::tok::identifier">{(clang::tok::TokenKind)Kind,en}</DisplayString>
@@ -458,17 +465,17 @@ For later versions of Visual Studio, no
   </Type>
   <Type Name="clang::FunctionDecl">
     <DisplayString IncludeView="retType">{*(clang::FunctionProtoType 
*)((clang::ExtQualsTypeCommonBase *)(((uintptr_t)DeclType.Value.Value) &amp; 
~15))-&gt;BaseType,view(retType)}</DisplayString>
-    <DisplayString IncludeView="parm0" Condition="0 == 
((clang::FunctionProtoType *)((clang::ExtQualsTypeCommonBase 
*)(((uintptr_t)DeclType.Value.Value) &amp; 
~15))-&gt;BaseType)-&gt;NumParams"></DisplayString>
+    <DisplayString IncludeView="parm0" Condition="0 == 
((clang::FunctionProtoType *)((clang::ExtQualsTypeCommonBase 
*)(((uintptr_t)DeclType.Value.Value) &amp; 
~15))-&gt;BaseType)-&gt;FunctionTypeBits.NumParams"></DisplayString>
     <DisplayString 
IncludeView="parm0">{*ParamInfo[0]}{*this,view(parm1)nd}</DisplayString>
-    <DisplayString IncludeView="parm1" Condition="1 == 
((clang::FunctionProtoType *)((clang::ExtQualsTypeCommonBase 
*)(((uintptr_t)DeclType.Value.Value) &amp; 
~15))-&gt;BaseType)-&gt;NumParams"></DisplayString>
+    <DisplayString IncludeView="parm1" Condition="1 == 
((clang::FunctionProtoType *)((clang::ExtQualsTypeCommonBase 
*)(((uintptr_t)DeclType.Value.Value) &amp; 
~15))-&gt;BaseType)-&gt;FunctionTypeBits.NumParams"></DisplayString>
     <DisplayString IncludeView="parm1">, 
{*ParamInfo[1]}{*this,view(parm2)nd}</DisplayString>
-    <DisplayString IncludeView="parm2" Condition="2 == 
((clang::FunctionProtoType *)((clang::ExtQualsTypeCommonBase 
*)(((uintptr_t)DeclType.Value.Value) &amp; 
~15))-&gt;BaseType)-&gt;NumParams"></DisplayString>
+    <DisplayString IncludeView="parm2" Condition="2 == 
((clang::FunctionProtoType *)((clang::ExtQualsTypeCommonBase 
*)(((uintptr_t)DeclType.Value.Value) &amp; 
~15))-&gt;BaseType)-&gt;FunctionTypeBits.NumParams"></DisplayString>
     <DisplayString IncludeView="parm2">, 
{*ParamInfo[2]}{*this,view(parm3)nd}</DisplayString>
-    <DisplayString IncludeView="parm3" Condition="3 == 
((clang::FunctionProtoType *)((clang::ExtQualsTypeCommonBase 
*)(((uintptr_t)DeclType.Value.Value) &amp; 
~15))-&gt;BaseType)-&gt;NumParams"></DisplayString>
+    <DisplayString IncludeView="parm3" Condition="3 == 
((clang::FunctionProtoType *)((clang::ExtQualsTypeCommonBase 
*)(((uintptr_t)DeclType.Value.Value) &amp; 
~15))-&gt;BaseType)-&gt;FunctionTypeBits.NumParams"></DisplayString>
     <DisplayString IncludeView="parm3">, 
{*ParamInfo[3]}{*this,view(parm4)nd}</DisplayString>
-    <DisplayString IncludeView="parm4" Condition="4 == 
((clang::FunctionProtoType *)((clang::ExtQualsTypeCommonBase 
*)(((uintptr_t)DeclType.Value.Value) &amp; 
~15))-&gt;BaseType)-&gt;NumParams"></DisplayString>
+    <DisplayString IncludeView="parm4" Condition="4 == 
((clang::FunctionProtoType *)((clang::ExtQualsTypeCommonBase 
*)(((uintptr_t)DeclType.Value.Value) &amp; 
~15))-&gt;BaseType)-&gt;FunctionTypeBits.NumParams"></DisplayString>
     <DisplayString IncludeView="parm4">, 
{*ParamInfo[4]}{*this,view(parm5)nd}</DisplayString>
-    <DisplayString IncludeView="parm5" Condition="5 == 
((clang::FunctionProtoType *)((clang::ExtQualsTypeCommonBase 
*)(((uintptr_t)DeclType.Value.Value) &amp; 
~15))-&gt;BaseType)-&gt;NumParams"></DisplayString>
+    <DisplayString IncludeView="parm5" Condition="5 == 
((clang::FunctionProtoType *)((clang::ExtQualsTypeCommonBase 
*)(((uintptr_t)DeclType.Value.Value) &amp; 
~15))-&gt;BaseType)-&gt;FunctionTypeBits.NumParams"></DisplayString>
     <DisplayString IncludeView="parm5">, /* expand for more params 
*/</DisplayString>
     <DisplayString>{*this,view(retType)nd} 
{Name,view(cpp)nd}({*this,view(parm0)nd})</DisplayString>
     <Expand>
@@ -477,7 +484,7 @@ For later versions of Visual Studio, no
         <DisplayString>{*this,view(parm0)nd}</DisplayString>
         <Expand>
           <ArrayItems>
-            <Size>((clang::FunctionProtoType *)((clang::ExtQualsTypeCommonBase 
*)(((uintptr_t)DeclType.Value.Value) &amp; 
~15))-&gt;BaseType)-&gt;NumParams</Size>
+            <Size>((clang::FunctionProtoType *)((clang::ExtQualsTypeCommonBase 
*)(((uintptr_t)DeclType.Value.Value) &amp; 
~15))-&gt;BaseType)-&gt;FunctionTypeBits.NumParams</Size>
             <ValuePointer>ParamInfo</ValuePointer>
           </ArrayItems>
         </Expand>


_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to