840462670ba7a6bc26265a2306b35f2f0f01f51c |
|
21-Apr-2013 |
Richard Smith <richard-llvm@metafoo.co.uk> |
The 'constexpr implies const' rule for non-static member functions is gone in C++1y, so stop adding the 'const' there. Provide a compatibility warning for code relying on this in C++11, with a fix-it hint. Update our lazily-written tests to add the const, except for those ones which were testing our implementation of this rule. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@179969 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/test/CXX/temp/temp.decls/temp.variadic/multi-level-substitution.cpp
|
9a4db032ecd991626d236a502e770126db32bd31 |
|
12-Sep-2012 |
Richard Smith <richard-llvm@metafoo.co.uk> |
PR13811: Add a FunctionParmPackExpr node to handle references to function parameter packs where the reference is not being expanded but the pack has been. Previously, Clang would segfault in such cases. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@163672 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/test/CXX/temp/temp.decls/temp.variadic/multi-level-substitution.cpp
|
500d729e85028944355a119f9823ac99fa5ddcab |
|
18-Jul-2012 |
Richard Smith <richard-llvm@metafoo.co.uk> |
PR13386: When matching up parameters between a function template declaration and a function template instantiation, if there's a parameter pack in the declaration and one at the same place in the instantiation, don't assume that the pack wasn't expanded -- it may have expanded to nothing. Instead, go ahead and check whether the parameter pack was expandable. We can do this as a side-effect of the work we'd need to do anyway, to find how many parameters were produced. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@160416 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/test/CXX/temp/temp.decls/temp.variadic/multi-level-substitution.cpp
|
762bb9d0ad20320b9f97a841dce57ba5e8e48b07 |
|
14-Oct-2011 |
Richard Smith <richard-llvm@metafoo.co.uk> |
Update all tests other than Driver/std.cpp to use -std=c++11 rather than -std=c++0x. Patch by Ahmed Charles! git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@141900 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/test/CXX/temp/temp.decls/temp.variadic/multi-level-substitution.cpp
|
089e8939b7b3e72c32477e39df82f18e6a8f436e |
|
10-Oct-2011 |
Douglas Gregor <dgregor@apple.com> |
When substituting into a sizeof parameter pack expression in a context where we can't expand (i.e., multi-level substitution), be sure to substitute the pack with its level-reduced pack. Fixes PR10230. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@141568 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/test/CXX/temp/temp.decls/temp.variadic/multi-level-substitution.cpp
|
406f98f6a5a7bde5707085af8d66204e7e76af45 |
|
02-Mar-2011 |
Douglas Gregor <dgregor@apple.com> |
When we're substituting into a parameter-type-list nested inside the pattern of an expansion, and we have a paramameter that is not a parameter pack, don't suppress substitution of parameter packs within this context. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@126819 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/test/CXX/temp/temp.decls/temp.variadic/multi-level-substitution.cpp
|
6952f1e4256c5b43aee5e98cea4e9b663bd1d413 |
|
19-Jan-2011 |
Douglas Gregor <dgregor@apple.com> |
Implement support for non-type template parameter packs whose type is a pack expansion, e.g., the parameter pack Values in: template<typename ...Types> struct Outer { template<Types ...Values> struct Inner; }; This new implementation approach introduces the notion of an "expanded" non-type template parameter pack, for which we have already expanded the types of the parameter pack (to, say, "int*, float*", for Outer<int*, float*>) but have not yet expanded the values. Aside from creating these expanded non-type template parameter packs, this patch updates template argument checking and non-type template parameter pack instantiation to make use of the appropriate types in the parameter pack. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@123845 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/test/CXX/temp/temp.decls/temp.variadic/multi-level-substitution.cpp
|
1aee05d08b2184acadeb36de300e216390780d6c |
|
15-Jan-2011 |
Douglas Gregor <dgregor@apple.com> |
Introduce a new kind of TemplateName that captures a substituted template template parameter pack that cannot be fully expanded because its enclosing pack expansion could not be expanded. This form of TemplateName plays the same role as SubstTemplateTypeParmPackType and SubstNonTypeTemplateParmPackExpr do for template type parameter packs and non-type template parameter packs, respectively. We should now handle these multi-level pack expansion substitutions anywhere. The largest remaining gap in our variadic-templates support is that we cannot cope with non-type template parameter packs whose type is a pack expansion. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@123521 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/test/CXX/temp/temp.decls/temp.variadic/multi-level-substitution.cpp
|
c7793c73ba8a343de3f2552d984851985a46f159 |
|
15-Jan-2011 |
Douglas Gregor <dgregor@apple.com> |
Introduce a new expression kind, SubstNonTypeTemplateParmPackExpr, that captures the substitution of a non-type template argument pack for a non-type template parameter pack within a pack expansion that cannot be fully expanded. This follows the approach taken by SubstTemplateTypeParmPackType. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@123506 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/test/CXX/temp/temp.decls/temp.variadic/multi-level-substitution.cpp
|
2be29f423acad3bbe39099a78db2805acb5bdf17 |
|
15-Jan-2011 |
Douglas Gregor <dgregor@apple.com> |
Teach template template argument pack expansions to keep track of the number of expansions, when we know it, and propagate that information through Sema. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@123493 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/test/CXX/temp/temp.decls/temp.variadic/multi-level-substitution.cpp
|
6a24bfda084f06a0b252b7befe8cbb17fce7f94e |
|
14-Jan-2011 |
Douglas Gregor <dgregor@apple.com> |
Handle substitutions into function parameter packs whose patterns contain multiple parameter packs at different levels. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@123488 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/test/CXX/temp/temp.decls/temp.variadic/multi-level-substitution.cpp
|
67fd1251aad51bb80d050b7fa5e506fef0ec8e02 |
|
14-Jan-2011 |
Douglas Gregor <dgregor@apple.com> |
Teach PackExpansionExpr to keep track of the number of pack expansions it will expand to, if known. Propagate this information throughout Sema. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@123470 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/test/CXX/temp/temp.decls/temp.variadic/multi-level-substitution.cpp
|
cded4f649cd4b7ba7d461c25c6482ef52b8d3a2a |
|
14-Jan-2011 |
Douglas Gregor <dgregor@apple.com> |
Keep track of the number of expansions to be produced from a type pack expansion, when it is known due to the substitution of an out parameter pack. This allows us to properly handle substitution into pack expansions that involve multiple parameter packs at different template parameter levels, even when this substitution happens one level at a time (as with partial specializations of member class templates and the signatures of member function templates). Note that the diagnostic we provide when there is an arity mismatch between an outer parameter pack and an inner parameter pack in this case isn't as clear as the normal diagnostic for an arity mismatch. However, this doesn't matter because these cases are very, very rare and (even then) only typically occur in a SFINAE context. The other kinds of pack expansions (expression, template, etc.) still need to support optional tracking of the number of expansions, and we need the moral equivalent of SubstTemplateTypeParmPackType for substituted argument packs of template template and non-type template parameters. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@123448 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/test/CXX/temp/temp.decls/temp.variadic/multi-level-substitution.cpp
|
c3069d618f4661d923cb1b5c4525b082fce73b04 |
|
14-Jan-2011 |
Douglas Gregor <dgregor@apple.com> |
Start implementing support for substitution into pack expansions that involve template parameter packs at multiple template levels that occur within the signatures members of class templates (and partial specializations thereof). This is a work-in-progress that is deficient in several ways, notably: - It only works for template type parameter packs, but we need to also support non-type template parameter packs and template template parameter packs. - It doesn't keep track of the lengths of the substituted argument packs in the expansion, so it can't properly diagnose length mismatches. However, this is a concrete step in the right direction. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@123425 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/test/CXX/temp/temp.decls/temp.variadic/multi-level-substitution.cpp
|
7a21fd45d4f04643cbfb5df96a01f84bc6d3dd14 |
|
03-Jan-2011 |
Douglas Gregor <dgregor@apple.com> |
Properly rebuild pack expansions whose pattern is a non-type template argument. As part of this, be more careful when determining if there are any parameter packs that cannot be expanded. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@122776 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/test/CXX/temp/temp.decls/temp.variadic/multi-level-substitution.cpp
|