Author: mps Date: Fri Jul 5 14:41:30 2019 New Revision: 365248 URL: http://llvm.org/viewvc/llvm-project?rev=365248&view=rev Log: Improve MSVC visualization of annot_template_id tokens
Now shows the actual annotated template. E.g., {annot_template_id (A<int, double>)} Also a few miscellaneous fixes to visualizers of other types 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=365248&r1=365247&r2=365248&view=diff ============================================================================== --- cfe/trunk/utils/ClangVisualizers/clang.natvis (original) +++ cfe/trunk/utils/ClangVisualizers/clang.natvis Fri Jul 5 14:41:30 2019 @@ -52,8 +52,9 @@ For later versions of Visual Studio, no <DisplayString Condition="TypeBits.TC==clang::Type::TypeClass::InjectedClassName" IncludeView="poly">{*(clang::InjectedClassNameType *)this}</DisplayString> <DisplayString Condition="TypeBits.TC==clang::Type::TypeClass::DependentName" IncludeView="poly">{*(clang::DependentNameType *)this}</DisplayString> <DisplayString Condition="TypeBits.TC==clang::Type::TypeClass::PackExpansion" IncludeView="poly">{*(clang::PackExpansionType *)this}</DisplayString> - <DisplayString Condition="TypeBits.TC==clang::LocInfoType::LocInfo" IncludeView="poly">{*(clang::LocInfoType *)this}</DisplayString> - <DisplayString IncludeView="cpp">{*this,view(poly)}</DisplayString> + <DisplayString Condition="TypeBits.TC==clang::LocInfoType::LocInfo" IncludeView="poly">{(clang::LocInfoType *)this,na}</DisplayString> + <DisplayString Condition="TypeBits.TC==clang::LocInfoType::LocInfo" IncludeView="cpp">{(clang::LocInfoType *)this,view(cpp)na}</DisplayString> + <DisplayString IncludeView="cpp">{this,view(poly)na}</DisplayString> <DisplayString IncludeView="left">{*this,view(cpp)}</DisplayString> <DisplayString IncludeView="right"></DisplayString> <DisplayString IncludeView="poly">No visualizer yet for {(clang::Type::TypeClass)TypeBits.TC,en}Type</DisplayString> <!-- Not yet implemented Type subclass --> @@ -222,7 +223,31 @@ For later versions of Visual Studio, no <DisplayString IncludeView="cpp">{(TypedefNameDecl *)this,view(name)nand}</DisplayString> <DisplayString>using {(TypedefNameDecl *)this,view(name)nand} = {(TypedefNameDecl *)this,view(type)nand}</DisplayString> </Type> - + <Type Name="clang::AssumedTemplateStorage"> + <DisplayString>{Name}</DisplayString> + </Type> + <Type Name="clang::UncommonTemplateNameStorage::BitsTag"> + <DisplayString>Kind={(UncommonTemplateNameStorage::Kind)Kind,en}, Size={Size}</DisplayString> + <Expand> + <Item Name="Kind">(UncommonTemplateNameStorage::Kind)Kind</Item> + <Item Name="Size">Size</Item> + </Expand> + </Type> + <Type Name="clang::UncommonTemplateNameStorage"> + <DisplayString IncludeView="cmn">{Bits},</DisplayString> + <DisplayString Condition="Bits.Kind==UncommonTemplateNameStorage::Overloaded">{this,view(cmn)na},{(OverloadedTemplateStorage*)this,na}</DisplayString> + <DisplayString Condition="Bits.Kind==UncommonTemplateNameStorage::Assumed">{this,view(cmn)na},{(AssumedTemplateStorage*)this,na}</DisplayString> + <DisplayString Condition="Bits.Kind==UncommonTemplateNameStorage::SubstTemplateTemplateParm">{this,view(cmn)na},{(SubstTemplateTemplateParmStorage*)this,na}</DisplayString> + <DisplayString Condition="Bits.Kind==UncommonTemplateNameStorage::SubstTemplateTemplateParmPack">{this,view(cmn)na},{(SubstTemplateTemplateParmPackStorage*)this,na}</DisplayString> + <DisplayString>{this,view(cmn)na}</DisplayString> + <Expand> + <Item Name="Bits">Bits</Item> + <ExpandedItem Condition="Bits.Kind==UncommonTemplateNameStorage::Overloaded">(OverloadedTemplateStorage*)this</ExpandedItem> + <ExpandedItem Condition="Bits.Kind==UncommonTemplateNameStorage::Assumed">(AssumedTemplateStorage*)this</ExpandedItem> + <ExpandedItem Condition="Bits.Kind==UncommonTemplateNameStorage::SubstTemplateTemplateParm">(SubstTemplateTemplateParmStorage*)this</ExpandedItem> + <ExpandedItem Condition="Bits.Kind==UncommonTemplateNameStorage::SubstTemplateTemplateParmPack">(SubstTemplateTemplateParmPackStorage*)this</ExpandedItem> + </Expand> + </Type> <Type Name="clang::TemplateName"> <DisplayString>{Storage,na}</DisplayString> <Expand> @@ -290,7 +315,7 @@ For later versions of Visual Studio, no <DisplayString IncludeView="right">({*this,view(parm0)})</DisplayString> <DisplayString>{this,view(left)na}{this,view(right)na}</DisplayString> <Expand> - <Item Name="ReturnType">ResultType</Item> + <Item Name="ResultType">ResultType</Item> <Synthetic Name="Parameter Types"> <DisplayString>{*this,view(parm0)}</DisplayString> <Expand> @@ -324,10 +349,11 @@ For later versions of Visual Studio, no <DisplayString Condition="CanonicalType.Value.Value != this">Non-canonical: {*TTPDecl}</DisplayString> <DisplayString>Canonical: {CanTTPTInfo}</DisplayString> <Expand> + <ExpandedItem>*(clang::Type *)this, view(cmn)</ExpandedItem> </Expand> </Type> <Type Name="clang::InjectedClassNameType"> - <DisplayString>{*Decl,view(cpp)}</DisplayString> + <DisplayString>{InjectedType,view(cpp)}</DisplayString> <Expand> <Item Name="Decl">Decl</Item> <Item Name="InjectedType">InjectedType</Item> @@ -384,7 +410,8 @@ For later versions of Visual Studio, no </Expand> </Type> <Type Name="clang::LocInfoType"> - <DisplayString>{*DeclInfo}</DisplayString> + <DisplayString IncludeView="cpp">{DeclInfo,view(cpp)na}</DisplayString> + <DisplayString>{DeclInfo,na}</DisplayString> <Expand> <Item Name="DeclInfo">DeclInfo</Item> <ExpandedItem>*(clang::Type *)this, view(cmn)</ExpandedItem> @@ -420,9 +447,11 @@ For later versions of Visual Studio, no <DisplayString IncludeView="arg2cpp">, {Args.Args[2],view(cpp)}, ...</DisplayString> <DisplayString IncludeView="cpp" Condition="Integer.Kind == clang::TemplateArgument::ArgKind::Pack">{*this,view(arg0cpp)}</DisplayString> <DisplayString Condition="Integer.Kind == clang::TemplateArgument::ArgKind::Pack">{*this,view(arg0)}</DisplayString> + <DisplayString Condition="Integer.Kind == clang::TemplateArgument::ArgKind::Expression">{(clang::Expr *)TypeOrValue.V,view(cpp)na}</DisplayString> <DisplayString>{(clang::TemplateArgument::ArgKind)TypeOrValue.Kind,en}</DisplayString> <Expand> <Item Name="QualType" Condition="Integer.Kind == clang::TemplateArgument::ArgKind::Type">*(clang::QualType *)&TypeOrValue.V</Item> + <Item Name="Expression" Condition="Integer.Kind == clang::TemplateArgument::ArgKind::Expression">(clang::Expr *)TypeOrValue.V</Item> <ArrayItems Condition="Integer.Kind == clang::TemplateArgument::ArgKind::Pack"> <Size>Args.NumArgs</Size> <ValuePointer>Args.Args</ValuePointer> @@ -468,6 +497,7 @@ For later versions of Visual Studio, no </Expand> </Type> <Type Name="clang::ParsedTemplateArgument"> + <DisplayString Condition="Kind==clang::ParsedTemplateArgument::Type" IncludeView="cpp">{(clang::QualType *)Arg,view(cpp)na}</DisplayString> <DisplayString Condition="Kind==clang::ParsedTemplateArgument::Type">Type template argument: {*(clang::QualType *)Arg}</DisplayString> <DisplayString Condition="Kind==clang::ParsedTemplateArgument::NonType">Non-type template argument: {*(clang::Expr *)Arg}</DisplayString> <DisplayString Condition="Kind==clang::ParsedTemplateArgument::Template">Template template argument: {*(clang::TemplateName *)Arg</DisplayString> @@ -604,7 +634,7 @@ For later versions of Visual Studio, no </Type> <Type Name="clang::detail::CXXDeductionGuideNameExtra"> <DisplayString IncludeView="cpp">{Template->TemplatedDecl,view(cpp)}</DisplayString> - <DisplayString>C++ Deduction guide for {Template->TemplatedDecl,view(cpp)}</DisplayString> + <DisplayString>C++ Deduction guide for {Template->TemplatedDecl,view(cpp)na}</DisplayString> </Type> <Type Name="clang::detail::CXXSpecialNameExtra"> <DisplayString IncludeView="cpp">{Type,view(cpp)}</DisplayString> @@ -613,9 +643,32 @@ For later versions of Visual Studio, no <Type Name="clang::DeclarationNameInfo"> <DisplayString>{Name}</DisplayString> </Type> + <Type Name="clang::TemplateIdAnnotation"> + <DisplayString IncludeView="arg0" Condition="NumArgs==0"></DisplayString> + <DisplayString IncludeView="arg0">{(ParsedTemplateArgument *)(this+1),view(cpp)na}{this,view(arg1)na}</DisplayString> + <DisplayString IncludeView="arg1" Condition="NumArgs==1"></DisplayString> + <DisplayString IncludeView="arg1">, {((ParsedTemplateArgument *)(this+1))+1,view(cpp)na}{this,view(arg2)na}</DisplayString> + <DisplayString IncludeView="arg2" Condition="NumArgs==2"></DisplayString> + <DisplayString IncludeView="arg1">, ...</DisplayString> + <DisplayString>{Name,na}<{this,view(arg0)na}></DisplayString> + <Expand> + <Item Name="Name">Name</Item> + <Synthetic Name="Arguments"> + <DisplayString>{this,view(arg0)na}</DisplayString> + <Expand> + <ArrayItems> + <Size>NumArgs</Size> + <ValuePointer>(ParsedTemplateArgument *)(this+1)</ValuePointer> + </ArrayItems> + </Expand> + </Synthetic> + <Item Name="Operator">Operator</Item> + </Expand> + </Type> <Type Name="clang::Token"> - <DisplayString Condition="Kind != clang::tok::identifier">{(clang::tok::TokenKind)Kind,en}</DisplayString> - <DisplayString Condition="Kind == clang::tok::identifier">{{Identifier ({*(clang::IdentifierInfo *)(PtrData)})}}</DisplayString> + <DisplayString Condition="Kind == clang::tok::annot_template_id">{{annot_template_id ({(clang::TemplateIdAnnotation *)(PtrData),na})}}</DisplayString> + <DisplayString Condition="Kind == clang::tok::identifier">{{Identifier ({(clang::IdentifierInfo *)(PtrData),na})}}</DisplayString> + <DisplayString>{(clang::tok::TokenKind)Kind,en}</DisplayString> </Type> <Type Name="clang::DeclSpec"> <DisplayString>[{(clang::DeclSpec::SCS)StorageClassSpec}], [{(clang::TypeSpecifierType)TypeSpecType}]</DisplayString> _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits