PR12057: Allow variadic template pack expansions to cross lambda boundaries.
Rather than adding a ContainsUnexpandedParameterPack bit to essentially every AST node, we tunnel the bit directly up to the surrounding lambda expression when we reach a context where an unexpanded pack can not normally appear. Thus any statement or declaration within a lambda can now potentially contain an unexpanded parameter pack. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@160705 91177308-0d34-0410-b5e6-96231b3b80d8
Showing
- include/clang/AST/ExprCXX.h 4 additions, 2 deletionsinclude/clang/AST/ExprCXX.h
- include/clang/Sema/ScopeInfo.h 4 additions, 1 deletioninclude/clang/Sema/ScopeInfo.h
- include/clang/Sema/Sema.h 3 additions, 1 deletioninclude/clang/Sema/Sema.h
- include/clang/Sema/Template.h 4 additions, 2 deletionsinclude/clang/Sema/Template.h
- lib/AST/ExprCXX.cpp 6 additions, 4 deletionslib/AST/ExprCXX.cpp
- lib/Sema/SemaLambda.cpp 10 additions, 18 deletionslib/Sema/SemaLambda.cpp
- lib/Sema/SemaTemplateInstantiate.cpp 13 additions, 0 deletionslib/Sema/SemaTemplateInstantiate.cpp
- lib/Sema/SemaTemplateVariadic.cpp 64 additions, 25 deletionslib/Sema/SemaTemplateVariadic.cpp
- lib/Sema/TreeTransform.h 12 additions, 6 deletionslib/Sema/TreeTransform.h
- test/CXX/expr/expr.prim/expr.prim.lambda/blocks.mm 18 additions, 1 deletiontest/CXX/expr/expr.prim/expr.prim.lambda/blocks.mm
- test/CXX/expr/expr.prim/expr.prim.lambda/p23.cpp 2 additions, 2 deletionstest/CXX/expr/expr.prim/expr.prim.lambda/p23.cpp
- test/SemaCXX/lambda-expressions.cpp 76 additions, 0 deletionstest/SemaCXX/lambda-expressions.cpp
Loading
Please register or sign in to comment