From cffb335614b6cd0b9ef4efcc4055d8bb815e489b Mon Sep 17 00:00:00 2001 From: Aaron Ballman Date: Tue, 18 Dec 2018 21:42:20 +0000 Subject: [PATCH] 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. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@349547 91177308-0d34-0410-b5e6-96231b3b80d8 --- utils/ClangVisualizers/clang.natvis | 53 ++++++++++++++++------------- 1 file changed, 30 insertions(+), 23 deletions(-) diff --git a/utils/ClangVisualizers/clang.natvis b/utils/ClangVisualizers/clang.natvis index 6e3ca96ffd..b59b62a7e2 100644 --- a/utils/ClangVisualizers/clang.natvis +++ b/utils/ClangVisualizers/clang.natvis @@ -171,17 +171,17 @@ For later versions of Visual Studio, no setup is required--> but the expansion has all parameters --> {ResultType,view(cpp)} - + {*(clang::QualType *)(this+1),view(cpp)}{*this,view(parm1)} - + , {*((clang::QualType *)(this+1)+1),view(cpp)}{*this,view(parm2)} - + , {*((clang::QualType *)(this+1)+2),view(cpp)}{*this,view(parm3)} - + , {*((clang::QualType *)(this+1)+3),view(cpp)}{*this,view(parm4)} - + , {*((clang::QualType *)(this+1)+4),view(cpp)}{*this,view(parm5)} - + , /* expand for more params */ {*this,view(retType)}({*this,view(parm0)}) @@ -190,7 +190,7 @@ For later versions of Visual Studio, no setup is required--> {*this,view(parm0)} - NumParams + FunctionTypeBits.NumParams (clang::QualType *)(this+1) @@ -395,22 +395,29 @@ For later versions of Visual Studio, no setup is required--> {{Identifier ({*(clang::IdentifierInfo *)(Ptr & ~PtrMask)})}} {{ObjC Zero Arg Selector (*{(clang::IdentifierInfo *)(Ptr & ~PtrMask)})}} {{ObjC One Arg Selector (*{(clang::IdentifierInfo *)(Ptr & ~PtrMask)})}} + C++ Constructor {{*(clang::detail::CXXSpecialNameExtra *)(Ptr & ~PtrMask)}} + C++ Destructor {{*(clang::detail::CXXSpecialNameExtra *)(Ptr & ~PtrMask)}} + C++ Conversion function {{*(clang::detail::CXXSpecialNameExtra *)(Ptr & ~PtrMask)}} + C++ Operator {{*(clang::detail::CXXOperatorIdName *)(Ptr & ~PtrMask)}} {*(clang::DeclarationNameExtra *)(Ptr & ~PtrMask),view(cpp)} - {{Extra ({*(clang::DeclarationNameExtra *)(Ptr & ~PtrMask)})}} + IncludeView="cpp">{*(clang::detail::DeclarationNameExtra *)(Ptr & ~PtrMask),view(cpp)} + {{Extra ({*(clang::detail::DeclarationNameExtra *)(Ptr & ~PtrMask)})}} *(clang::IdentifierInfo *)(Ptr & ~PtrMask) *(clang::IdentifierInfo *)(Ptr & ~PtrMask) *(clang::IdentifierInfo *)(Ptr & ~PtrMask) - (clang::DeclarationNameExtra *)(Ptr & ~PtrMask) + *(clang::detail::CXXSpecialNameExtra *)(Ptr & ~PtrMask) + *(clang::detail::CXXSpecialNameExtra *)(Ptr & ~PtrMask) + *(clang::detail::CXXSpecialNameExtra *)(Ptr & ~PtrMask) + *(clang::detail::CXXOperatorIdName *)(Ptr & ~PtrMask) + (clang::detail::DeclarationNameExtra *)(Ptr & ~PtrMask) - - {((clang::CXXSpecialName *)this)->Type,view(cpp)} - {(clang::DeclarationNameExtra::ExtraKind)ExtraKindOrNumArgs,en}{" ",sb}{*this,view(cpp)} + + C++ Deduction guide + C++ Literal operator + C++ Using directive + {(clang::detail::DeclarationNameExtra::ExtraKind)ExtraKindOrNumArgs,en}{" ",sb}{*this,view(cpp)} {(clang::tok::TokenKind)Kind,en} @@ -458,17 +465,17 @@ For later versions of Visual Studio, no setup is required--> {*(clang::FunctionProtoType *)((clang::ExtQualsTypeCommonBase *)(((uintptr_t)DeclType.Value.Value) & ~15))->BaseType,view(retType)} - + {*ParamInfo[0]}{*this,view(parm1)nd} - + , {*ParamInfo[1]}{*this,view(parm2)nd} - + , {*ParamInfo[2]}{*this,view(parm3)nd} - + , {*ParamInfo[3]}{*this,view(parm4)nd} - + , {*ParamInfo[4]}{*this,view(parm5)nd} - + , /* expand for more params */ {*this,view(retType)nd} {Name,view(cpp)nd}({*this,view(parm0)nd}) @@ -477,7 +484,7 @@ For later versions of Visual Studio, no setup is required--> {*this,view(parm0)nd} - ((clang::FunctionProtoType *)((clang::ExtQualsTypeCommonBase *)(((uintptr_t)DeclType.Value.Value) & ~15))->BaseType)->NumParams + ((clang::FunctionProtoType *)((clang::ExtQualsTypeCommonBase *)(((uintptr_t)DeclType.Value.Value) & ~15))->BaseType)->FunctionTypeBits.NumParams ParamInfo -- 2.50.1