klimek created this revision. klimek added a reviewer: rsmith. klimek added a subscriber: cfe-commits.
Covers significantly more code in the template template pack argument test and fixes the resulting assert problem. http://reviews.llvm.org/D15743 Files: lib/Sema/TreeTransform.h test/SemaTemplate/temp_arg_template.cpp Index: test/SemaTemplate/temp_arg_template.cpp =================================================================== --- test/SemaTemplate/temp_arg_template.cpp +++ test/SemaTemplate/temp_arg_template.cpp @@ -75,7 +75,11 @@ // expected-warning@-2 {{variadic templates are a C++11 extension}} #endif -struct template_tuple {}; +struct template_tuple { +#if __cplusplus >= 201103L + static constexpr int N = sizeof...(Templates); +#endif +}; template <typename T> struct identity {}; template <template <typename> class... Templates> Index: lib/Sema/TreeTransform.h =================================================================== --- lib/Sema/TreeTransform.h +++ lib/Sema/TreeTransform.h @@ -3582,7 +3582,7 @@ case TemplateArgument::Template: case TemplateArgument::TemplateExpansion: { NestedNameSpecifierLocBuilder Builder; - TemplateName Template = Arg.getAsTemplate(); + TemplateName Template = Arg.getAsTemplateOrTemplatePattern(); if (DependentTemplateName *DTN = Template.getAsDependentTemplateName()) Builder.MakeTrivial(SemaRef.Context, DTN->getQualifier(), Loc); else if (QualifiedTemplateName *QTN = Template.getAsQualifiedTemplateName())
Index: test/SemaTemplate/temp_arg_template.cpp =================================================================== --- test/SemaTemplate/temp_arg_template.cpp +++ test/SemaTemplate/temp_arg_template.cpp @@ -75,7 +75,11 @@ // expected-warning@-2 {{variadic templates are a C++11 extension}} #endif -struct template_tuple {}; +struct template_tuple { +#if __cplusplus >= 201103L + static constexpr int N = sizeof...(Templates); +#endif +}; template <typename T> struct identity {}; template <template <typename> class... Templates> Index: lib/Sema/TreeTransform.h =================================================================== --- lib/Sema/TreeTransform.h +++ lib/Sema/TreeTransform.h @@ -3582,7 +3582,7 @@ case TemplateArgument::Template: case TemplateArgument::TemplateExpansion: { NestedNameSpecifierLocBuilder Builder; - TemplateName Template = Arg.getAsTemplate(); + TemplateName Template = Arg.getAsTemplateOrTemplatePattern(); if (DependentTemplateName *DTN = Template.getAsDependentTemplateName()) Builder.MakeTrivial(SemaRef.Context, DTN->getQualifier(), Loc); else if (QualifiedTemplateName *QTN = Template.getAsQualifiedTemplateName())
_______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits