This revision was automatically updated to reflect the committed changes. Closed by commit rC359980: [clang] fixing -ast-print for variadic parameter pack in lambda capture (authored by Rakete1111, committed by ).
Changed prior to commit: https://reviews.llvm.org/D61556?vs=198155&id=198172#toc Repository: rC Clang CHANGES SINCE LAST ACTION https://reviews.llvm.org/D61556/new/ https://reviews.llvm.org/D61556 Files: lib/AST/StmtPrinter.cpp test/AST/ast-printer-lambda.cpp Index: lib/AST/StmtPrinter.cpp =================================================================== --- lib/AST/StmtPrinter.cpp +++ lib/AST/StmtPrinter.cpp @@ -1895,6 +1895,9 @@ llvm_unreachable("VLA type in explicit captures."); } + if (C->isPackExpansion()) + OS << "..."; + if (Node->isInitCapture(C)) PrintExpr(C->getCapturedVar()->getInit()); } Index: test/AST/ast-printer-lambda.cpp =================================================================== --- test/AST/ast-printer-lambda.cpp +++ test/AST/ast-printer-lambda.cpp @@ -0,0 +1,36 @@ +// 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] { +} +} + +}; \ No newline at end of file
Index: lib/AST/StmtPrinter.cpp =================================================================== --- lib/AST/StmtPrinter.cpp +++ lib/AST/StmtPrinter.cpp @@ -1895,6 +1895,9 @@ llvm_unreachable("VLA type in explicit captures."); } + if (C->isPackExpansion()) + OS << "..."; + if (Node->isInitCapture(C)) PrintExpr(C->getCapturedVar()->getInit()); } Index: test/AST/ast-printer-lambda.cpp =================================================================== --- test/AST/ast-printer-lambda.cpp +++ test/AST/ast-printer-lambda.cpp @@ -0,0 +1,36 @@ +// 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] { +} +} + +}; \ No newline at end of file
_______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits