Author: mps Date: Sun Jun 12 17:21:56 2016 New Revision: 272521 URL: http://llvm.org/viewvc/llvm-project?rev=272521&view=rev Log: Visual Studio native visualizer for ParsedTemplateArgument
Does a good job with type and non-type template arguments and lays the groundwork for template template arguments to visualize well once there is a TemplateName visualizer. Also fixed what looks like an incorrect comment in the header for ParsedTemplate.h. Modified: cfe/trunk/include/clang/Sema/ParsedTemplate.h cfe/trunk/utils/ClangVisualizers/clang.natvis Modified: cfe/trunk/include/clang/Sema/ParsedTemplate.h URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Sema/ParsedTemplate.h?rev=272521&r1=272520&r2=272521&view=diff ============================================================================== --- cfe/trunk/include/clang/Sema/ParsedTemplate.h (original) +++ cfe/trunk/include/clang/Sema/ParsedTemplate.h Sun Jun 12 17:21:56 2016 @@ -121,8 +121,8 @@ namespace clang { KindType Kind; /// \brief The actual template argument representation, which may be - /// an \c ActionBase::TypeTy* (for a type), an Expr* (for an - /// expression), or an ActionBase::TemplateTy (for a template). + /// an \c Sema::TypeTy* (for a type), an Expr* (for an + /// expression), or an Sema::TemplateTy (for a template). void *Arg; /// \brief The nested-name-specifier that can accompany a template template Modified: cfe/trunk/utils/ClangVisualizers/clang.natvis URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/utils/ClangVisualizers/clang.natvis?rev=272521&r1=272520&r2=272521&view=diff ============================================================================== --- cfe/trunk/utils/ClangVisualizers/clang.natvis (original) +++ cfe/trunk/utils/ClangVisualizers/clang.natvis Sun Jun 12 17:21:56 2016 @@ -309,6 +309,17 @@ For later versions of Visual Studio, no <Item Name="TemplateList">TemplateArgumentLists</Item> </Expand> </Type> + <Type Name="clang::ParsedTemplateArgument"> + <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> + <Expand> + <Item Name="Kind">Kind,en</Item> + <Item Name="Arg" Condition="Kind==clang::ParsedTemplateArgument::Type">(clang::QualType *)Arg</Item> + <Item Name="Arg" Condition="Kind==clang::ParsedTemplateArgument::NonType">(clang::Expr *)Arg</Item> + <Item Name="Arg" Condition="Kind==clang::ParsedTemplateArgument::Template">(clang::TemplateName *)Arg</Item> + </Expand> + </Type> <!-- Builtin types that have C++ keywords are manually displayed as that keyword. Otherwise, just use the enum name --> <Type Name="clang::BuiltinType"> <DisplayString Condition="BuiltinTypeBits.Kind==clang::BuiltinType::Void">void</DisplayString> _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits