llvm-project/clang/test/AST/ast-printer-lambda.cpp
Nicolas Lesser 5125a02a03 [clang] fixing -ast-print for variadic parameter pack in lambda capture
Summary:
currently for:
```
 template<typename ... T>
void f(T... t) {
  auto l = [t...]{};
}
```
`clang -ast-print file.cpp`
outputs:

```
template <typename ...T> void f(T ...t) {
    auto l = [t]         {
        }
;
}
```
notice that there is not `...` in the capture list of the lambda. this patch fixes this issue. and add test for it.

Patch by Tyker

Reviewers: rsmith

Reviewed By: rsmith

Subscribers: cfe-commits

Tags: #clang

Differential Revision: https://reviews.llvm.org/D61556

llvm-svn: 359980
2019-05-05 12:35:12 +00:00

36 lines
495 B
C++

// RUN: %clang_cc1 -ast-print -std=c++17 %s | FileCheck %s
struct S {
template<typename ... T>
void test1(int i, T... t) {
{
auto lambda = [i]{};
//CHECK: [i] {
}
{
auto lambda = [=]{};
//CHECK: [=] {
}
{
auto lambda = [&]{};
//CHECK: [&] {
}
{
auto lambda = [t..., i]{};
//CHECK: [t..., i] {
}
{
auto lambda = [&t...]{};
//CHECK: [&t...] {
}
{
auto lambda = [this, &t...]{};
//CHECK: [this, &t...] {
}
{
auto lambda = [t..., this]{};
//CHECK: [t..., this] {
}
}
};