clang-1/lib/Sema
Douglas Gregor cded4f649c 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
2011-01-14 17:04:44 +00:00
..
AnalysisBasedWarnings.cpp Remove a kludge from analysis based warnings that used to detect 2011-01-08 06:54:40 +00:00
AttributeList.cpp Refactor how we collect attributes during parsing, and add slots for attributes 2010-12-24 02:08:15 +00:00
CMakeLists.txt Move the work-in-progress implementation of variadic templates to its own file in Sema. No functionality change. 2010-12-15 17:38:57 +00:00
CodeCompleteConsumer.cpp Eliminate the (de-)serialization of code completion results, now that 2010-10-11 22:12:15 +00:00
DeclSpec.cpp Refactor how we collect attributes during parsing, and add slots for attributes 2010-12-24 02:08:15 +00:00
IdentifierResolver.cpp Rename DeclContext::getLookupContext to getRedeclContext and change its semantics slightly. No functionality change in the absence of inline namespaces. Also, change a few places where inline namespaces actually make a difference to be prepared for them. 2010-08-31 00:36:30 +00:00
JumpDiagnostics.cpp Implement an indirect-goto optimization for goto *&&lbl and respect this 2010-10-28 08:53:48 +00:00
Makefile BUILD_ARCHIVE is the default for libraries, no need to set it. 2010-07-18 00:14:47 +00:00
Sema.cpp Implement basic support for template instantiation of pack expansions 2010-12-20 22:05:00 +00:00
SemaAccess.cpp Minor whitespace and comment fixes. No functionality change. 2010-11-28 22:53:37 +00:00
SemaAttr.cpp Treat visibility on an enclosing namespace as a non-explicit source of 2010-12-10 02:59:44 +00:00
SemaCXXCast.cpp Add the location of the right parenthesis of a C++ named cast 2011-01-12 22:41:29 +00:00
SemaCXXScopeSpec.cpp Rename DeclContext::getLookupContext to getRedeclContext and change its semantics slightly. No functionality change in the absence of inline namespaces. Also, change a few places where inline namespaces actually make a difference to be prepared for them. 2010-08-31 00:36:30 +00:00
SemaChecking.cpp Add semantic checking that the "thousands grouping" 2011-01-08 05:28:46 +00:00
SemaCodeComplete.cpp Renamed CXXBaseOrMemberInitializer to CXXCtorInitializer. This is both shorter, 2011-01-08 20:30:50 +00:00
SemaDecl.cpp Added warning about invalid register specification for local variables. 2011-01-11 15:16:52 +00:00
SemaDeclAttr.cpp Refactor the application of type attributes so that attributes from 2011-01-05 12:14:39 +00:00
SemaDeclCXX.cpp Renamed CXXBaseOrMemberInitializer to CXXCtorInitializer. This is both shorter, 2011-01-08 20:30:50 +00:00
SemaDeclObjC.cpp Renamed CXXBaseOrMemberInitializer to CXXCtorInitializer. This is both shorter, 2011-01-08 20:30:50 +00:00
SemaExceptionSpec.cpp Added missing IgnoreParens(). 2010-12-14 22:11:44 +00:00
SemaExpr.cpp Add a comment for r123231. 2011-01-11 23:38:13 +00:00
SemaExprCXX.cpp More __uuidof validation: 2010-12-27 01:32:00 +00:00
SemaExprObjC.cpp Ensure that the result type of an Objective-C class message send is 2011-01-11 03:23:19 +00:00
SemaInit.cpp MSVC doesn't require an accessible copy-constructor when binding a temporary class object to a const-reference. 2010-12-31 10:43:42 +00:00
SemaLookup.cpp Replace the representation of template template argument pack 2011-01-05 18:58:31 +00:00
SemaObjCProperty.cpp Don't warn on missing 'copy' attribute on a 'block' 2011-01-05 23:00:04 +00:00
SemaOverload.cpp Implement C++ [temp.func.order]p5 more directly, by passing down the 2011-01-11 17:34:58 +00:00
SemaStmt.cpp Refactor the application of type attributes so that attributes from 2011-01-05 12:14:39 +00:00
SemaTemplate.cpp Start implementing support for substitution into pack expansions that 2011-01-14 02:55:32 +00:00
SemaTemplateDeduction.cpp Fix a few warnings stemming from my inability to properly fill out 2011-01-14 05:11:40 +00:00
SemaTemplateInstantiate.cpp Keep track of the number of expansions to be produced from a type pack 2011-01-14 17:04:44 +00:00
SemaTemplateInstantiateDecl.cpp Keep track of the number of expansions to be produced from a type pack 2011-01-14 17:04:44 +00:00
SemaTemplateVariadic.cpp Keep track of the number of expansions to be produced from a type pack 2011-01-14 17:04:44 +00:00
SemaType.cpp Keep track of the number of expansions to be produced from a type pack 2011-01-14 17:04:44 +00:00
TargetAttributesSema.cpp 1. Add some ABI information for the Microblaze. 2010-12-19 19:57:51 +00:00
TargetAttributesSema.h Remove Sema.h's dependency on DeclCXX.h. 2010-08-25 07:42:41 +00:00
TreeTransform.h Keep track of the number of expansions to be produced from a type pack 2011-01-14 17:04:44 +00:00
TypeLocBuilder.h Make TypeLocBuilder an implementation detail of Sema. Nobody else should be using it 2010-12-02 00:05:49 +00:00