Author: Bruno Ricci
Date: 2020-06-21T13:59:11+01:00
New Revision: e560280cd5739503cd9a75e05da769a6742918b5

URL: 
https://github.com/llvm/llvm-project/commit/e560280cd5739503cd9a75e05da769a6742918b5
DIFF: 
https://github.com/llvm/llvm-project/commit/e560280cd5739503cd9a75e05da769a6742918b5.diff

LOG: [clang][NFC] Regenerate test/AST/ast-dump-lambda.cpp with 
--match-full-lines.

Added: 
    

Modified: 
    clang/test/AST/ast-dump-lambda.cpp

Removed: 
    


################################################################################
diff  --git a/clang/test/AST/ast-dump-lambda.cpp 
b/clang/test/AST/ast-dump-lambda.cpp
index 4b53b17aa284..a3ca4a8fc534 100644
--- a/clang/test/AST/ast-dump-lambda.cpp
+++ b/clang/test/AST/ast-dump-lambda.cpp
@@ -1,12 +1,14 @@
 // Test without serialization:
 // RUN: %clang_cc1 -triple x86_64-unknown-unknown -Wno-unused-value 
-std=gnu++17 \
-// RUN:                                         -ast-dump %s | FileCheck 
-strict-whitespace %s
+// RUN:                                         -ast-dump %s -ast-dump-filter 
test \
+// RUN: | FileCheck -strict-whitespace --match-full-lines %s
 
 // Test with serialization:
 // RUN: %clang_cc1 -triple x86_64-unknown-unknown -Wno-unused-value 
-std=gnu++17 \
 // RUN:            -emit-pch -o %t %s
 // RUN: %clang_cc1 -triple x86_64-unknown-unknown -Wno-unused-value 
-std=gnu++17 \
-// RUN:            -x c++ -include-pch %t -ast-dump-all | FileCheck 
-strict-whitespace %s
+// RUN:            -x c++ -include-pch %t -ast-dump-all -ast-dump-filter test \
+// RUN: | FileCheck -strict-whitespace --match-full-lines %s
 
 
 
@@ -32,262 +34,262 @@ template <typename... Ts> void test(Ts... a) {
   []() noexcept {};
   []() -> int { return 0; };
 }
-// CHECK: TranslationUnitDecl {{.*}} <<invalid sloc>> <invalid sloc>{{( 
<undeserialized declarations>)?}}
-// CHECK: `-FunctionTemplateDecl {{.*}} <{{.*}}ast-dump-lambda.cpp:13:1, 
line:34:1> line:13:32{{( imported)?}} test
-// CHECK-NEXT:   |-TemplateTypeParmDecl {{.*}} <col:11, col:23> col:23{{( 
imported)?}} referenced typename depth 0 index 0 ... Ts
-// CHECK-NEXT:   `-FunctionDecl {{.*}} <col:27, line:34:1> line:13:32{{( 
imported)?}} test 'void (Ts...)'
-// CHECK-NEXT:     |-ParmVarDecl {{.*}} <col:37, col:43> col:43{{( 
imported)?}} referenced a 'Ts...' pack
-// CHECK-NEXT:     `-CompoundStmt {{.*}} <col:46, line:34:1>
-// CHECK-NEXT:       |-DeclStmt {{.*}} <line:14:3, line:19:4>
-// CHECK-NEXT:       | `-CXXRecordDecl {{.*}} <line:14:3, line:19:3> 
line:14:10{{( imported)?}}{{( <undeserialized declarations>)?}} struct V 
definition
-// CHECK-NEXT:       |   |-DefinitionData empty aggregate standard_layout 
trivially_copyable pod trivial literal has_constexpr_non_copy_move_ctor 
can_const_default_init
-// CHECK-NEXT:       |   | |-DefaultConstructor exists trivial constexpr 
needs_implicit defaulted_is_constexpr
-// CHECK-NEXT:       |   | |-CopyConstructor simple trivial has_const_param 
needs_implicit implicit_has_const_param
-// CHECK-NEXT:       |   | |-MoveConstructor exists simple trivial 
needs_implicit
-// CHECK-NEXT:       |   | |-CopyAssignment simple trivial has_const_param 
needs_implicit implicit_has_const_param
-// CHECK-NEXT:       |   | |-MoveAssignment exists simple trivial 
needs_implicit
-// CHECK-NEXT:       |   | `-Destructor simple irrelevant trivial 
needs_implicit
-// CHECK-NEXT:       |   |-CXXRecordDecl {{.*}} <col:3, col:10> col:10{{( 
imported)?}} implicit struct V
-// CHECK-NEXT:       |   `-CXXMethodDecl {{.*}} <line:15:5, line:18:5> 
line:15:10{{( imported)?}} f 'void ()'
-// CHECK-NEXT:       |     `-CompoundStmt {{.*}} <col:14, line:18:5>
-// CHECK-NEXT:       |       |-LambdaExpr {{.*}} <line:16:7, col:15> '(lambda 
at {{.*}}ast-dump-lambda.cpp:16:7)'
-// CHECK-NEXT:       |       | |-CXXRecordDecl {{.*}} <col:7> col:7{{( 
imported)?}} implicit{{( <undeserialized declarations>)?}} class definition
-// CHECK-NEXT:       |       | | |-DefinitionData lambda standard_layout 
trivially_copyable can_const_default_init
-// CHECK-NEXT:       |       | | | |-DefaultConstructor
-// CHECK-NEXT:       |       | | | |-CopyConstructor simple trivial 
has_const_param needs_implicit implicit_has_const_param
-// CHECK-NEXT:       |       | | | |-MoveConstructor exists simple trivial 
needs_implicit
-// CHECK-NEXT:       |       | | | |-CopyAssignment trivial has_const_param 
needs_implicit implicit_has_const_param
-// CHECK-NEXT:       |       | | | |-MoveAssignment
-// CHECK-NEXT:       |       | | | `-Destructor simple irrelevant trivial 
needs_implicit
-// CHECK-NEXT:       |       | | |-CXXMethodDecl {{.*}} <col:12, col:15> 
col:7{{( imported)?}} operator() 'auto () const -> auto' inline
-// CHECK-NEXT:       |       | | | `-CompoundStmt {{.*}} <col:14, col:15>
-// CHECK-NEXT:       |       | | `-FieldDecl {{.*}} <col:8> col:8{{( 
imported)?}} implicit 'V *'
-// CHECK-NEXT:       |       | |-ParenListExpr {{.*}} <col:8> 'NULL TYPE'
-// CHECK-NEXT:       |       | | `-CXXThisExpr {{.*}} <col:8> 'V *' this
-// CHECK-NEXT:       |       | `-CompoundStmt {{.*}} <col:14, col:15>
-// CHECK-NEXT:       |       `-LambdaExpr {{.*}} <line:17:7, col:16> '(lambda 
at {{.*}}ast-dump-lambda.cpp:17:7)'
-// CHECK-NEXT:       |         |-CXXRecordDecl {{.*}} <col:7> col:7{{( 
imported)?}} implicit{{( <undeserialized declarations>)?}} class definition
-// CHECK-NEXT:       |         | |-DefinitionData lambda standard_layout 
trivially_copyable can_const_default_init
-// CHECK-NEXT:       |         | | |-DefaultConstructor defaulted_is_constexpr
-// CHECK-NEXT:       |         | | |-CopyConstructor simple trivial 
has_const_param needs_implicit implicit_has_const_param
-// CHECK-NEXT:       |         | | |-MoveConstructor exists simple trivial 
needs_implicit
-// CHECK-NEXT:       |         | | |-CopyAssignment trivial has_const_param 
needs_implicit implicit_has_const_param
-// CHECK-NEXT:       |         | | |-MoveAssignment
-// CHECK-NEXT:       |         | | `-Destructor simple irrelevant trivial 
needs_implicit
-// CHECK-NEXT:       |         | |-CXXMethodDecl {{.*}} <col:13, col:16> 
col:7{{( imported)?}} operator() 'auto () const -> auto' inline
-// CHECK-NEXT:       |         | | `-CompoundStmt {{.*}} <col:15, col:16>
-// CHECK-NEXT:       |         | `-FieldDecl {{.*}} <col:8> col:8{{( 
imported)?}} implicit 'V'
-// CHECK-NEXT:       |         |-ParenListExpr {{.*}} <col:8> 'NULL TYPE'
-// CHECK-NEXT:       |         | `-UnaryOperator {{.*}} <col:8> '<dependent 
type>' prefix '*' cannot overflow
-// CHECK-NEXT:       |         |   `-CXXThisExpr {{.*}} <col:8> 'V *' this
-// CHECK-NEXT:       |         `-CompoundStmt {{.*}} <col:15, col:16>
-// CHECK-NEXT:       |-DeclStmt {{.*}} <line:20:3, col:11>
-// CHECK-NEXT:       | |-VarDecl {{.*}} <col:3, col:7> col:7{{( imported)?}} 
referenced b 'int'
-// CHECK-NEXT:       | `-VarDecl {{.*}} <col:3, col:10> col:10{{( imported)?}} 
referenced c 'int'
-// CHECK-NEXT:       |-LambdaExpr {{.*}} <line:21:3, col:9> '(lambda at 
{{.*}}ast-dump-lambda.cpp:21:3)'
-// CHECK-NEXT:       | |-CXXRecordDecl {{.*}} <col:3> col:3{{( imported)?}} 
implicit{{( <undeserialized declarations>)?}} class definition
-// CHECK-NEXT:       | | |-DefinitionData lambda empty standard_layout 
trivially_copyable literal can_const_default_init
-// CHECK-NEXT:       | | | |-DefaultConstructor defaulted_is_constexpr
-// CHECK-NEXT:       | | | |-CopyConstructor simple trivial has_const_param 
needs_implicit implicit_has_const_param
-// CHECK-NEXT:       | | | |-MoveConstructor exists simple trivial 
needs_implicit
-// CHECK-NEXT:       | | | |-CopyAssignment trivial has_const_param 
needs_implicit implicit_has_const_param
-// CHECK-NEXT:       | | | |-MoveAssignment
-// CHECK-NEXT:       | | | `-Destructor simple irrelevant trivial 
needs_implicit
-// CHECK-NEXT:       | | |-CXXMethodDecl {{.*}} <col:6, col:9> col:3{{( 
imported)?}} operator() 'auto () const' inline
-// CHECK-NEXT:       | | | `-CompoundStmt {{.*}} <col:8, col:9>
-// CHECK-NEXT:       | | |-CXXConversionDecl {{.*}} <col:3, col:9> col:3{{( 
imported)?}} implicit constexpr operator auto (*)() 'auto (*() const 
noexcept)()' inline
-// CHECK-NEXT:       | | `-CXXMethodDecl {{.*}} <col:3, col:9> col:3{{( 
imported)?}} implicit __invoke 'auto ()' static inline
-// CHECK-NEXT:       | `-CompoundStmt {{.*}} <col:8, col:9>
-// CHECK-NEXT:       |-LambdaExpr {{.*}} <line:22:3, col:19> '(lambda at 
{{.*}}ast-dump-lambda.cpp:22:3)'
-// CHECK-NEXT:       | |-CXXRecordDecl {{.*}} <col:3> col:3{{( imported)?}} 
implicit{{( <undeserialized declarations>)?}} class definition
-// CHECK-NEXT:       | | |-DefinitionData lambda empty standard_layout 
trivially_copyable literal can_const_default_init
-// CHECK-NEXT:       | | | |-DefaultConstructor defaulted_is_constexpr
-// CHECK-NEXT:       | | | |-CopyConstructor simple trivial has_const_param 
needs_implicit implicit_has_const_param
-// CHECK-NEXT:       | | | |-MoveConstructor exists simple trivial 
needs_implicit
-// CHECK-NEXT:       | | | |-CopyAssignment trivial has_const_param 
needs_implicit implicit_has_const_param
-// CHECK-NEXT:       | | | |-MoveAssignment
-// CHECK-NEXT:       | | | `-Destructor simple irrelevant trivial 
needs_implicit
-// CHECK-NEXT:       | | |-CXXMethodDecl {{.*}} <col:16, col:19> col:3{{( 
imported)?}} operator() 'auto (int, ...) const' inline
-// CHECK-NEXT:       | | | |-ParmVarDecl {{.*}} <col:6, col:10> col:10{{( 
imported)?}} a 'int'
-// CHECK-NEXT:       | | | `-CompoundStmt {{.*}} <col:18, col:19>
-// CHECK-NEXT:       | | |-CXXConversionDecl {{.*}} <col:3, col:19> col:3{{( 
imported)?}} implicit constexpr operator auto (*)(int, ...) 'auto (*() const 
noexcept)(int, ...)' inline
-// CHECK-NEXT:       | | `-CXXMethodDecl {{.*}} <col:3, col:19> col:3{{( 
imported)?}} implicit __invoke 'auto (int, ...)' static inline
-// CHECK-NEXT:       | |   `-ParmVarDecl {{.*}} <col:6, col:10> col:10{{( 
imported)?}} a 'int'
-// CHECK-NEXT:       | `-CompoundStmt {{.*}} <col:18, col:19>
-// CHECK-NEXT:       |-LambdaExpr {{.*}} <line:23:3, col:11> '(lambda at 
{{.*}}ast-dump-lambda.cpp:23:3)'
-// CHECK-NEXT:       | |-CXXRecordDecl {{.*}} <col:3> col:3{{( imported)?}} 
implicit{{( <undeserialized declarations>)?}} class definition
-// CHECK-NEXT:       | | |-DefinitionData lambda standard_layout 
trivially_copyable can_const_default_init
-// CHECK-NEXT:       | | | |-DefaultConstructor
-// CHECK-NEXT:       | | | |-CopyConstructor simple trivial has_const_param 
needs_implicit implicit_has_const_param
-// CHECK-NEXT:       | | | |-MoveConstructor exists simple trivial 
needs_implicit
-// CHECK-NEXT:       | | | |-CopyAssignment trivial has_const_param 
needs_implicit implicit_has_const_param
-// CHECK-NEXT:       | | | |-MoveAssignment
-// CHECK-NEXT:       | | | `-Destructor simple irrelevant trivial 
needs_implicit
-// CHECK-NEXT:       | | |-CXXMethodDecl {{.*}} <col:8, col:11> col:3{{( 
imported)?}} operator() 'auto () const -> auto' inline
-// CHECK-NEXT:       | | | `-CompoundStmt {{.*}} <col:10, col:11>
-// CHECK-NEXT:       | | `-FieldDecl {{.*}} <col:4> col:4{{( imported)?}} 
implicit 'Ts...'
-// CHECK-NEXT:       | |-ParenListExpr {{.*}} <col:4> 'NULL TYPE'
-// CHECK-NEXT:       | | `-DeclRefExpr {{.*}} <col:4> 'Ts' lvalue ParmVar 
{{.*}} 'a' 'Ts...'
-// CHECK-NEXT:       | `-CompoundStmt {{.*}} <col:10, col:11>
-// CHECK-NEXT:       |-LambdaExpr {{.*}} <line:24:3, col:8> '(lambda at 
{{.*}}ast-dump-lambda.cpp:24:3)'
-// CHECK-NEXT:       | |-CXXRecordDecl {{.*}} <col:3> col:3{{( imported)?}} 
implicit{{( <undeserialized declarations>)?}} class definition
-// CHECK-NEXT:       | | |-DefinitionData lambda empty standard_layout 
trivially_copyable literal can_const_default_init
-// CHECK-NEXT:       | | | |-DefaultConstructor defaulted_is_constexpr
-// CHECK-NEXT:       | | | |-CopyConstructor simple trivial has_const_param 
needs_implicit implicit_has_const_param
-// CHECK-NEXT:       | | | |-MoveConstructor exists simple trivial 
needs_implicit
-// CHECK-NEXT:       | | | |-CopyAssignment trivial has_const_param 
needs_implicit implicit_has_const_param
-// CHECK-NEXT:       | | | |-MoveAssignment
-// CHECK-NEXT:       | | | `-Destructor simple irrelevant trivial 
needs_implicit
-// CHECK-NEXT:       | | `-CXXMethodDecl {{.*}} <col:5, col:8> col:3{{( 
imported)?}} operator() 'auto () const -> auto' inline
-// CHECK-NEXT:       | |   `-CompoundStmt {{.*}} <col:7, col:8>
-// CHECK-NEXT:       | `-CompoundStmt {{.*}} <col:7, col:8>
-// CHECK-NEXT:       |-LambdaExpr {{.*}} <line:25:3, col:19> '(lambda at 
{{.*}}ast-dump-lambda.cpp:25:3)'
-// CHECK-NEXT:       | |-CXXRecordDecl {{.*}} <col:3> col:3{{( imported)?}} 
implicit{{( <undeserialized declarations>)?}} class definition
-// CHECK-NEXT:       | | |-DefinitionData lambda empty standard_layout 
trivially_copyable literal can_const_default_init
-// CHECK-NEXT:       | | | |-DefaultConstructor defaulted_is_constexpr
-// CHECK-NEXT:       | | | |-CopyConstructor simple trivial has_const_param 
needs_implicit implicit_has_const_param
-// CHECK-NEXT:       | | | |-MoveConstructor exists simple trivial 
needs_implicit
-// CHECK-NEXT:       | | | |-CopyAssignment trivial has_const_param 
needs_implicit implicit_has_const_param
-// CHECK-NEXT:       | | | |-MoveAssignment
-// CHECK-NEXT:       | | | `-Destructor simple irrelevant trivial 
needs_implicit
-// CHECK-NEXT:       | | `-CXXMethodDecl {{.*}} <col:5, col:19> col:3{{( 
imported)?}} operator() 'auto () const -> auto' inline
-// CHECK-NEXT:       | |   `-CompoundStmt {{.*}} <col:7, col:19>
-// CHECK-NEXT:       | |     `-ReturnStmt {{.*}} <col:9, col:16>
-// CHECK-NEXT:       | |       `-DeclRefExpr {{.*}} <col:16> 'const int' 
lvalue Var {{.*}} 'b' 'int'
-// CHECK-NEXT:       | `-CompoundStmt {{.*}} <col:7, col:19>
-// CHECK-NEXT:       |   `-ReturnStmt {{.*}} <col:9, col:16>
-// CHECK-NEXT:       |     `-DeclRefExpr {{.*}} <col:16> 'const int' lvalue 
Var {{.*}} 'b' 'int'
-// CHECK-NEXT:       |-LambdaExpr {{.*}} <line:26:3, col:8> '(lambda at 
{{.*}}ast-dump-lambda.cpp:26:3)'
-// CHECK-NEXT:       | |-CXXRecordDecl {{.*}} <col:3> col:3{{( imported)?}} 
implicit{{( <undeserialized declarations>)?}} class definition
-// CHECK-NEXT:       | | |-DefinitionData lambda empty standard_layout 
trivially_copyable literal can_const_default_init
-// CHECK-NEXT:       | | | |-DefaultConstructor defaulted_is_constexpr
-// CHECK-NEXT:       | | | |-CopyConstructor simple trivial has_const_param 
needs_implicit implicit_has_const_param
-// CHECK-NEXT:       | | | |-MoveConstructor exists simple trivial 
needs_implicit
-// CHECK-NEXT:       | | | |-CopyAssignment trivial has_const_param 
needs_implicit implicit_has_const_param
-// CHECK-NEXT:       | | | |-MoveAssignment
-// CHECK-NEXT:       | | | `-Destructor simple irrelevant trivial 
needs_implicit
-// CHECK-NEXT:       | | `-CXXMethodDecl {{.*}} <col:5, col:8> col:3{{( 
imported)?}} operator() 'auto () const -> auto' inline
-// CHECK-NEXT:       | |   `-CompoundStmt {{.*}} <col:7, col:8>
-// CHECK-NEXT:       | `-CompoundStmt {{.*}} <col:7, col:8>
-// CHECK-NEXT:       |-LambdaExpr {{.*}} <line:27:3, col:19> '(lambda at 
{{.*}}ast-dump-lambda.cpp:27:3)'
-// CHECK-NEXT:       | |-CXXRecordDecl {{.*}} <col:3> col:3{{( imported)?}} 
implicit{{( <undeserialized declarations>)?}} class definition
-// CHECK-NEXT:       | | |-DefinitionData lambda empty standard_layout 
trivially_copyable literal can_const_default_init
-// CHECK-NEXT:       | | | |-DefaultConstructor defaulted_is_constexpr
-// CHECK-NEXT:       | | | |-CopyConstructor simple trivial has_const_param 
needs_implicit implicit_has_const_param
-// CHECK-NEXT:       | | | |-MoveConstructor exists simple trivial 
needs_implicit
-// CHECK-NEXT:       | | | |-CopyAssignment trivial has_const_param 
needs_implicit implicit_has_const_param
-// CHECK-NEXT:       | | | |-MoveAssignment
-// CHECK-NEXT:       | | | `-Destructor simple irrelevant trivial 
needs_implicit
-// CHECK-NEXT:       | | `-CXXMethodDecl {{.*}} <col:5, col:19> col:3{{( 
imported)?}} operator() 'auto () const -> auto' inline
-// CHECK-NEXT:       | |   `-CompoundStmt {{.*}} <col:7, col:19>
-// CHECK-NEXT:       | |     `-ReturnStmt {{.*}} <col:9, col:16>
-// CHECK-NEXT:       | |       `-DeclRefExpr {{.*}} <col:16> 'int' lvalue Var 
{{.*}} 'c' 'int'
-// CHECK-NEXT:       | `-CompoundStmt {{.*}} <col:7, col:19>
-// CHECK-NEXT:       |   `-ReturnStmt {{.*}} <col:9, col:16>
-// CHECK-NEXT:       |     `-DeclRefExpr {{.*}} <col:16> 'int' lvalue Var 
{{.*}} 'c' 'int'
-// CHECK-NEXT:       |-LambdaExpr {{.*}} <line:28:3, col:27> '(lambda at 
{{.*}}ast-dump-lambda.cpp:28:3)'
-// CHECK-NEXT:       | |-CXXRecordDecl {{.*}} <col:3> col:3{{( imported)?}} 
implicit{{( <undeserialized declarations>)?}} class definition
-// CHECK-NEXT:       | | |-DefinitionData lambda trivially_copyable literal 
can_const_default_init
-// CHECK-NEXT:       | | | |-DefaultConstructor
-// CHECK-NEXT:       | | | |-CopyConstructor simple trivial has_const_param 
needs_implicit implicit_has_const_param
-// CHECK-NEXT:       | | | |-MoveConstructor exists simple trivial 
needs_implicit
-// CHECK-NEXT:       | | | |-CopyAssignment trivial has_const_param 
needs_implicit implicit_has_const_param
-// CHECK-NEXT:       | | | |-MoveAssignment
-// CHECK-NEXT:       | | | `-Destructor simple irrelevant trivial 
needs_implicit
-// CHECK-NEXT:       | | |-CXXMethodDecl {{.*}} <col:9, col:27> col:3{{( 
imported)?}} operator() 'auto () const -> auto' inline
-// CHECK-NEXT:       | | | `-CompoundStmt {{.*}} <col:11, col:27>
-// CHECK-NEXT:       | | |   `-ReturnStmt {{.*}} <col:13, col:24>
-// CHECK-NEXT:       | | |     `-BinaryOperator {{.*}} <col:20, col:24> 'int' 
'+'
-// CHECK-NEXT:       | | |       |-ImplicitCastExpr {{.*}} <col:20> 'int' 
<LValueToRValue>
-// CHECK-NEXT:       | | |       | `-DeclRefExpr {{.*}} <col:20> 'const int' 
lvalue Var {{.*}} 'b' 'int'
-// CHECK-NEXT:       | | |       `-ImplicitCastExpr {{.*}} <col:24> 'int' 
<LValueToRValue>
-// CHECK-NEXT:       | | |         `-DeclRefExpr {{.*}} <col:24> 'int' lvalue 
Var {{.*}} 'c' 'int'
-// CHECK-NEXT:       | | |-FieldDecl {{.*}} <col:4> col:4{{( imported)?}} 
implicit 'int'
-// CHECK-NEXT:       | | `-FieldDecl {{.*}} <col:8> col:8{{( imported)?}} 
implicit 'int &'
-// CHECK-NEXT:       | |-ImplicitCastExpr {{.*}} <col:4> 'int' <LValueToRValue>
-// CHECK-NEXT:       | | `-DeclRefExpr {{.*}} <col:4> 'int' lvalue Var {{.*}} 
'b' 'int'
-// CHECK-NEXT:       | |-DeclRefExpr {{.*}} <col:8> 'int' lvalue Var {{.*}} 
'c' 'int'
-// CHECK-NEXT:       | `-CompoundStmt {{.*}} <col:11, col:27>
-// CHECK-NEXT:       |   `-ReturnStmt {{.*}} <col:13, col:24>
-// CHECK-NEXT:       |     `-BinaryOperator {{.*}} <col:20, col:24> 'int' '+'
-// CHECK-NEXT:       |       |-ImplicitCastExpr {{.*}} <col:20> 'int' 
<LValueToRValue>
-// CHECK-NEXT:       |       | `-DeclRefExpr {{.*}} <col:20> 'const int' 
lvalue Var {{.*}} 'b' 'int'
-// CHECK-NEXT:       |       `-ImplicitCastExpr {{.*}} <col:24> 'int' 
<LValueToRValue>
-// CHECK-NEXT:       |         `-DeclRefExpr {{.*}} <col:24> 'int' lvalue Var 
{{.*}} 'c' 'int'
-// CHECK-NEXT:       |-LambdaExpr {{.*}} <line:29:3, col:19> '(lambda at 
{{.*}}ast-dump-lambda.cpp:29:3)'
-// CHECK-NEXT:       | |-CXXRecordDecl {{.*}} <col:3> col:3{{( imported)?}} 
implicit{{( <undeserialized declarations>)?}} class definition
-// CHECK-NEXT:       | | |-DefinitionData lambda standard_layout 
trivially_copyable can_const_default_init
-// CHECK-NEXT:       | | | |-DefaultConstructor
-// CHECK-NEXT:       | | | |-CopyConstructor simple trivial has_const_param 
needs_implicit implicit_has_const_param
-// CHECK-NEXT:       | | | |-MoveConstructor exists simple trivial 
needs_implicit
-// CHECK-NEXT:       | | | |-CopyAssignment trivial has_const_param 
needs_implicit implicit_has_const_param
-// CHECK-NEXT:       | | | |-MoveAssignment
-// CHECK-NEXT:       | | | `-Destructor simple irrelevant trivial 
needs_implicit
-// CHECK-NEXT:       | | |-CXXMethodDecl {{.*}} <col:16, col:19> col:3{{( 
imported)?}} operator() 'auto () const -> auto' inline
-// CHECK-NEXT:       | | | `-CompoundStmt {{.*}} <col:18, col:19>
-// CHECK-NEXT:       | | |-FieldDecl {{.*}} <col:4> col:4{{( imported)?}} 
implicit 'Ts...'
-// CHECK-NEXT:       | | `-FieldDecl {{.*}} <col:10> col:10{{( imported)?}} 
implicit 'int':'int'
-// CHECK-NEXT:       | |-ParenListExpr {{.*}} <col:4> 'NULL TYPE'
-// CHECK-NEXT:       | | `-DeclRefExpr {{.*}} <col:4> 'Ts' lvalue ParmVar 
{{.*}} 'a' 'Ts...'
-// CHECK-NEXT:       | |-IntegerLiteral {{.*}} <col:14> 'int' 12
-// CHECK-NEXT:       | `-CompoundStmt {{.*}} <col:18, col:19>
-// CHECK-NEXT:       |-LambdaExpr {{.*}} <line:30:3, col:19> '(lambda at 
{{.*}}ast-dump-lambda.cpp:30:3)'
-// CHECK-NEXT:       | |-CXXRecordDecl {{.*}} <col:3> col:3{{( imported)?}} 
implicit{{( <undeserialized declarations>)?}} class definition
-// CHECK-NEXT:       | | |-DefinitionData lambda empty standard_layout 
trivially_copyable literal can_const_default_init
-// CHECK-NEXT:       | | | |-DefaultConstructor defaulted_is_constexpr
-// CHECK-NEXT:       | | | |-CopyConstructor simple trivial has_const_param 
needs_implicit implicit_has_const_param
-// CHECK-NEXT:       | | | |-MoveConstructor exists simple trivial 
needs_implicit
-// CHECK-NEXT:       | | | |-CopyAssignment trivial has_const_param 
needs_implicit implicit_has_const_param
-// CHECK-NEXT:       | | | |-MoveAssignment
-// CHECK-NEXT:       | | | `-Destructor simple irrelevant trivial 
needs_implicit
-// CHECK-NEXT:       | | |-CXXMethodDecl {{.*}} <col:8, col:19> col:3{{( 
imported)?}} constexpr operator() 'auto () const' inline
-// CHECK-NEXT:       | | | `-CompoundStmt {{.*}} <col:18, col:19>
-// CHECK-NEXT:       | | |-CXXConversionDecl {{.*}} <col:3, col:19> col:3{{( 
imported)?}} implicit constexpr operator auto (*)() 'auto (*() const 
noexcept)()' inline
-// CHECK-NEXT:       | | `-CXXMethodDecl {{.*}} <col:3, col:19> col:3{{( 
imported)?}} implicit __invoke 'auto ()' static inline
-// CHECK-NEXT:       | `-CompoundStmt {{.*}} <col:18, col:19>
-// CHECK-NEXT:       |-LambdaExpr {{.*}} <line:31:3, col:17> '(lambda at 
{{.*}}ast-dump-lambda.cpp:31:3)'
-// CHECK-NEXT:       | |-CXXRecordDecl {{.*}} <col:3> col:3{{( imported)?}} 
implicit{{( <undeserialized declarations>)?}} class definition
-// CHECK-NEXT:       | | |-DefinitionData lambda empty standard_layout 
trivially_copyable literal can_const_default_init
-// CHECK-NEXT:       | | | |-DefaultConstructor defaulted_is_constexpr
-// CHECK-NEXT:       | | | |-CopyConstructor simple trivial has_const_param 
needs_implicit implicit_has_const_param
-// CHECK-NEXT:       | | | |-MoveConstructor exists simple trivial 
needs_implicit
-// CHECK-NEXT:       | | | |-CopyAssignment trivial has_const_param 
needs_implicit implicit_has_const_param
-// CHECK-NEXT:       | | | |-MoveAssignment
-// CHECK-NEXT:       | | | `-Destructor simple irrelevant trivial 
needs_implicit
-// CHECK-NEXT:       | | |-CXXMethodDecl {{.*}} <col:8, col:17> col:3{{( 
imported)?}} operator() 'auto ()' inline
-// CHECK-NEXT:       | | | `-CompoundStmt {{.*}} <col:16, col:17>
-// CHECK-NEXT:       | | |-CXXConversionDecl {{.*}} <col:3, col:17> col:3{{( 
imported)?}} implicit constexpr operator auto (*)() 'auto (*() const 
noexcept)()' inline
-// CHECK-NEXT:       | | `-CXXMethodDecl {{.*}} <col:3, col:17> col:3{{( 
imported)?}} implicit __invoke 'auto ()' static inline
-// CHECK-NEXT:       | `-CompoundStmt {{.*}} <col:16, col:17>
-// CHECK-NEXT:       |-LambdaExpr {{.*}} <line:32:3, col:18> '(lambda at 
{{.*}}ast-dump-lambda.cpp:32:3)'
-// CHECK-NEXT:       | |-CXXRecordDecl {{.*}} <col:3> col:3{{( imported)?}} 
implicit{{( <undeserialized declarations>)?}} class definition
-// CHECK-NEXT:       | | |-DefinitionData lambda empty standard_layout 
trivially_copyable literal can_const_default_init
-// CHECK-NEXT:       | | | |-DefaultConstructor defaulted_is_constexpr
-// CHECK-NEXT:       | | | |-CopyConstructor simple trivial has_const_param 
needs_implicit implicit_has_const_param
-// CHECK-NEXT:       | | | |-MoveConstructor exists simple trivial 
needs_implicit
-// CHECK-NEXT:       | | | |-CopyAssignment trivial has_const_param 
needs_implicit implicit_has_const_param
-// CHECK-NEXT:       | | | |-MoveAssignment
-// CHECK-NEXT:       | | | `-Destructor simple irrelevant trivial 
needs_implicit
-// CHECK-NEXT:       | | |-CXXMethodDecl {{.*}} <col:8, col:18> col:3{{( 
imported)?}} operator() 'auto () const noexcept' inline
-// CHECK-NEXT:       | | | `-CompoundStmt {{.*}} <col:17, col:18>
-// CHECK-NEXT:       | | |-CXXConversionDecl {{.*}} <col:3, col:18> col:3{{( 
imported)?}} implicit constexpr operator auto (*)() noexcept 'auto (*() const 
noexcept)() noexcept' inline
-// CHECK-NEXT:       | | `-CXXMethodDecl {{.*}} <col:3, col:18> col:3{{( 
imported)?}} implicit __invoke 'auto () noexcept' static inline
-// CHECK-NEXT:       | `-CompoundStmt {{.*}} <col:17, col:18>
-// CHECK-NEXT:       `-LambdaExpr {{.*}} <line:33:3, col:27> '(lambda at 
{{.*}}ast-dump-lambda.cpp:33:3)'
-// CHECK-NEXT:         |-CXXRecordDecl {{.*}} <col:3> col:3{{( imported)?}} 
implicit{{( <undeserialized declarations>)?}} class definition
-// CHECK-NEXT:         | |-DefinitionData lambda empty standard_layout 
trivially_copyable literal can_const_default_init
-// CHECK-NEXT:         | | |-DefaultConstructor defaulted_is_constexpr
-// CHECK-NEXT:         | | |-CopyConstructor simple trivial has_const_param 
needs_implicit implicit_has_const_param
-// CHECK-NEXT:         | | |-MoveConstructor exists simple trivial 
needs_implicit
-// CHECK-NEXT:         | | |-CopyAssignment trivial has_const_param 
needs_implicit implicit_has_const_param
-// CHECK-NEXT:         | | |-MoveAssignment
-// CHECK-NEXT:         | | `-Destructor simple irrelevant trivial 
needs_implicit
-// CHECK-NEXT:         | |-CXXMethodDecl {{.*}} <col:11, col:27> col:3{{( 
imported)?}} operator() 'auto () const -> int' inline
-// CHECK-NEXT:         | | `-CompoundStmt {{.*}} <col:15, col:27>
-// CHECK-NEXT:         | |   `-ReturnStmt {{.*}} <col:17, col:24>
-// CHECK-NEXT:         | |     `-IntegerLiteral {{.*}} <col:24> 'int' 0
-// CHECK-NEXT:         | |-CXXConversionDecl {{.*}} <col:3, col:27> col:3{{( 
imported)?}} implicit constexpr operator int (*)() 'auto (*() const noexcept)() 
-> int' inline
-// CHECK-NEXT:         | `-CXXMethodDecl {{.*}} <col:3, col:27> col:3{{( 
imported)?}} implicit __invoke 'auto () -> int' static inline
-// CHECK-NEXT:         `-CompoundStmt {{.*}} <col:15, col:27>
-// CHECK-NEXT:           `-ReturnStmt {{.*}} <col:17, col:24>
-// CHECK-NEXT:             `-IntegerLiteral {{.*}} <col:24> 'int' 0
+// CHECK:Dumping test:
+// CHECK-NEXT:FunctionTemplateDecl {{.*}} <{{.*}}ast-dump-lambda.cpp:15:1, 
line:36:1> line:15:32{{( imported)?}} test
+// CHECK-NEXT:|-TemplateTypeParmDecl {{.*}} <col:11, col:23> col:23{{( 
imported)?}} referenced typename depth 0 index 0 ... Ts
+// CHECK-NEXT:`-FunctionDecl {{.*}} <col:27, line:36:1> line:15:32{{( 
imported)?}} test 'void (Ts...)'
+// CHECK-NEXT:  |-ParmVarDecl {{.*}} <col:37, col:43> col:43{{( imported)?}} 
referenced a 'Ts...' pack
+// CHECK-NEXT:  `-CompoundStmt {{.*}} <col:46, line:36:1>
+// CHECK-NEXT:    |-DeclStmt {{.*}} <line:16:3, line:21:4>
+// CHECK-NEXT:    | `-CXXRecordDecl {{.*}} <line:16:3, line:21:3> 
line:16:10{{( imported)?}}{{( <undeserialized declarations>)?}} struct V 
definition
+// CHECK-NEXT:    |   |-DefinitionData empty aggregate standard_layout 
trivially_copyable pod trivial literal has_constexpr_non_copy_move_ctor 
can_const_default_init
+// CHECK-NEXT:    |   | |-DefaultConstructor exists trivial constexpr 
needs_implicit defaulted_is_constexpr
+// CHECK-NEXT:    |   | |-CopyConstructor simple trivial has_const_param 
needs_implicit implicit_has_const_param
+// CHECK-NEXT:    |   | |-MoveConstructor exists simple trivial needs_implicit
+// CHECK-NEXT:    |   | |-CopyAssignment simple trivial has_const_param 
needs_implicit implicit_has_const_param
+// CHECK-NEXT:    |   | |-MoveAssignment exists simple trivial needs_implicit
+// CHECK-NEXT:    |   | `-Destructor simple irrelevant trivial needs_implicit
+// CHECK-NEXT:    |   |-CXXRecordDecl {{.*}} <col:3, col:10> col:10{{( 
imported)?}} implicit struct V
+// CHECK-NEXT:    |   `-CXXMethodDecl {{.*}} <line:17:5, line:20:5> 
line:17:10{{( imported)?}} f 'void ()'
+// CHECK-NEXT:    |     `-CompoundStmt {{.*}} <col:14, line:20:5>
+// CHECK-NEXT:    |       |-LambdaExpr {{.*}} <line:18:7, col:15> '(lambda at 
{{.*}}ast-dump-lambda.cpp:18:7)'
+// CHECK-NEXT:    |       | |-CXXRecordDecl {{.*}} <col:7> col:7{{( 
imported)?}} implicit{{( <undeserialized declarations>)?}} class definition
+// CHECK-NEXT:    |       | | |-DefinitionData lambda standard_layout 
trivially_copyable can_const_default_init
+// CHECK-NEXT:    |       | | | |-DefaultConstructor
+// CHECK-NEXT:    |       | | | |-CopyConstructor simple trivial 
has_const_param needs_implicit implicit_has_const_param
+// CHECK-NEXT:    |       | | | |-MoveConstructor exists simple trivial 
needs_implicit
+// CHECK-NEXT:    |       | | | |-CopyAssignment trivial has_const_param 
needs_implicit implicit_has_const_param
+// CHECK-NEXT:    |       | | | |-MoveAssignment
+// CHECK-NEXT:    |       | | | `-Destructor simple irrelevant trivial 
needs_implicit
+// CHECK-NEXT:    |       | | |-CXXMethodDecl {{.*}} <col:12, col:15> col:7{{( 
imported)?}} operator() 'auto () const -> auto' inline
+// CHECK-NEXT:    |       | | | `-CompoundStmt {{.*}} <col:14, col:15>
+// CHECK-NEXT:    |       | | `-FieldDecl {{.*}} <col:8> col:8{{( imported)?}} 
implicit 'V *'
+// CHECK-NEXT:    |       | |-ParenListExpr {{.*}} <col:8> 'NULL TYPE'
+// CHECK-NEXT:    |       | | `-CXXThisExpr {{.*}} <col:8> 'V *' this
+// CHECK-NEXT:    |       | `-CompoundStmt {{.*}} <col:14, col:15>
+// CHECK-NEXT:    |       `-LambdaExpr {{.*}} <line:19:7, col:16> '(lambda at 
{{.*}}ast-dump-lambda.cpp:19:7)'
+// CHECK-NEXT:    |         |-CXXRecordDecl {{.*}} <col:7> col:7{{( 
imported)?}} implicit{{( <undeserialized declarations>)?}} class definition
+// CHECK-NEXT:    |         | |-DefinitionData lambda standard_layout 
trivially_copyable can_const_default_init
+// CHECK-NEXT:    |         | | |-DefaultConstructor defaulted_is_constexpr
+// CHECK-NEXT:    |         | | |-CopyConstructor simple trivial 
has_const_param needs_implicit implicit_has_const_param
+// CHECK-NEXT:    |         | | |-MoveConstructor exists simple trivial 
needs_implicit
+// CHECK-NEXT:    |         | | |-CopyAssignment trivial has_const_param 
needs_implicit implicit_has_const_param
+// CHECK-NEXT:    |         | | |-MoveAssignment
+// CHECK-NEXT:    |         | | `-Destructor simple irrelevant trivial 
needs_implicit
+// CHECK-NEXT:    |         | |-CXXMethodDecl {{.*}} <col:13, col:16> col:7{{( 
imported)?}} operator() 'auto () const -> auto' inline
+// CHECK-NEXT:    |         | | `-CompoundStmt {{.*}} <col:15, col:16>
+// CHECK-NEXT:    |         | `-FieldDecl {{.*}} <col:8> col:8{{( imported)?}} 
implicit 'V'
+// CHECK-NEXT:    |         |-ParenListExpr {{.*}} <col:8> 'NULL TYPE'
+// CHECK-NEXT:    |         | `-UnaryOperator {{.*}} <col:8> '<dependent 
type>' prefix '*' cannot overflow
+// CHECK-NEXT:    |         |   `-CXXThisExpr {{.*}} <col:8> 'V *' this
+// CHECK-NEXT:    |         `-CompoundStmt {{.*}} <col:15, col:16>
+// CHECK-NEXT:    |-DeclStmt {{.*}} <line:22:3, col:11>
+// CHECK-NEXT:    | |-VarDecl {{.*}} <col:3, col:7> col:7{{( imported)?}} 
referenced b 'int'
+// CHECK-NEXT:    | `-VarDecl {{.*}} <col:3, col:10> col:10{{( imported)?}} 
referenced c 'int'
+// CHECK-NEXT:    |-LambdaExpr {{.*}} <line:23:3, col:9> '(lambda at 
{{.*}}ast-dump-lambda.cpp:23:3)'
+// CHECK-NEXT:    | |-CXXRecordDecl {{.*}} <col:3> col:3{{( imported)?}} 
implicit{{( <undeserialized declarations>)?}} class definition
+// CHECK-NEXT:    | | |-DefinitionData lambda empty standard_layout 
trivially_copyable literal can_const_default_init
+// CHECK-NEXT:    | | | |-DefaultConstructor defaulted_is_constexpr
+// CHECK-NEXT:    | | | |-CopyConstructor simple trivial has_const_param 
needs_implicit implicit_has_const_param
+// CHECK-NEXT:    | | | |-MoveConstructor exists simple trivial needs_implicit
+// CHECK-NEXT:    | | | |-CopyAssignment trivial has_const_param 
needs_implicit implicit_has_const_param
+// CHECK-NEXT:    | | | |-MoveAssignment
+// CHECK-NEXT:    | | | `-Destructor simple irrelevant trivial needs_implicit
+// CHECK-NEXT:    | | |-CXXMethodDecl {{.*}} <col:6, col:9> col:3{{( 
imported)?}} operator() 'auto () const' inline
+// CHECK-NEXT:    | | | `-CompoundStmt {{.*}} <col:8, col:9>
+// CHECK-NEXT:    | | |-CXXConversionDecl {{.*}} <col:3, col:9> col:3{{( 
imported)?}} implicit constexpr operator auto (*)() 'auto (*() const 
noexcept)()' inline
+// CHECK-NEXT:    | | `-CXXMethodDecl {{.*}} <col:3, col:9> col:3{{( 
imported)?}} implicit __invoke 'auto ()' static inline
+// CHECK-NEXT:    | `-CompoundStmt {{.*}} <col:8, col:9>
+// CHECK-NEXT:    |-LambdaExpr {{.*}} <line:24:3, col:19> '(lambda at 
{{.*}}ast-dump-lambda.cpp:24:3)'
+// CHECK-NEXT:    | |-CXXRecordDecl {{.*}} <col:3> col:3{{( imported)?}} 
implicit{{( <undeserialized declarations>)?}} class definition
+// CHECK-NEXT:    | | |-DefinitionData lambda empty standard_layout 
trivially_copyable literal can_const_default_init
+// CHECK-NEXT:    | | | |-DefaultConstructor defaulted_is_constexpr
+// CHECK-NEXT:    | | | |-CopyConstructor simple trivial has_const_param 
needs_implicit implicit_has_const_param
+// CHECK-NEXT:    | | | |-MoveConstructor exists simple trivial needs_implicit
+// CHECK-NEXT:    | | | |-CopyAssignment trivial has_const_param 
needs_implicit implicit_has_const_param
+// CHECK-NEXT:    | | | |-MoveAssignment
+// CHECK-NEXT:    | | | `-Destructor simple irrelevant trivial needs_implicit
+// CHECK-NEXT:    | | |-CXXMethodDecl {{.*}} <col:16, col:19> col:3{{( 
imported)?}} operator() 'auto (int, ...) const' inline
+// CHECK-NEXT:    | | | |-ParmVarDecl {{.*}} <col:6, col:10> col:10{{( 
imported)?}} a 'int'
+// CHECK-NEXT:    | | | `-CompoundStmt {{.*}} <col:18, col:19>
+// CHECK-NEXT:    | | |-CXXConversionDecl {{.*}} <col:3, col:19> col:3{{( 
imported)?}} implicit constexpr operator auto (*)(int, ...) 'auto (*() const 
noexcept)(int, ...)' inline
+// CHECK-NEXT:    | | `-CXXMethodDecl {{.*}} <col:3, col:19> col:3{{( 
imported)?}} implicit __invoke 'auto (int, ...)' static inline
+// CHECK-NEXT:    | |   `-ParmVarDecl {{.*}} <col:6, col:10> col:10{{( 
imported)?}} a 'int'
+// CHECK-NEXT:    | `-CompoundStmt {{.*}} <col:18, col:19>
+// CHECK-NEXT:    |-LambdaExpr {{.*}} <line:25:3, col:11> '(lambda at 
{{.*}}ast-dump-lambda.cpp:25:3)'
+// CHECK-NEXT:    | |-CXXRecordDecl {{.*}} <col:3> col:3{{( imported)?}} 
implicit{{( <undeserialized declarations>)?}} class definition
+// CHECK-NEXT:    | | |-DefinitionData lambda standard_layout 
trivially_copyable can_const_default_init
+// CHECK-NEXT:    | | | |-DefaultConstructor
+// CHECK-NEXT:    | | | |-CopyConstructor simple trivial has_const_param 
needs_implicit implicit_has_const_param
+// CHECK-NEXT:    | | | |-MoveConstructor exists simple trivial needs_implicit
+// CHECK-NEXT:    | | | |-CopyAssignment trivial has_const_param 
needs_implicit implicit_has_const_param
+// CHECK-NEXT:    | | | |-MoveAssignment
+// CHECK-NEXT:    | | | `-Destructor simple irrelevant trivial needs_implicit
+// CHECK-NEXT:    | | |-CXXMethodDecl {{.*}} <col:8, col:11> col:3{{( 
imported)?}} operator() 'auto () const -> auto' inline
+// CHECK-NEXT:    | | | `-CompoundStmt {{.*}} <col:10, col:11>
+// CHECK-NEXT:    | | `-FieldDecl {{.*}} <col:4> col:4{{( imported)?}} 
implicit 'Ts...'
+// CHECK-NEXT:    | |-ParenListExpr {{.*}} <col:4> 'NULL TYPE'
+// CHECK-NEXT:    | | `-DeclRefExpr {{.*}} <col:4> 'Ts' lvalue ParmVar {{.*}} 
'a' 'Ts...'
+// CHECK-NEXT:    | `-CompoundStmt {{.*}} <col:10, col:11>
+// CHECK-NEXT:    |-LambdaExpr {{.*}} <line:26:3, col:8> '(lambda at 
{{.*}}ast-dump-lambda.cpp:26:3)'
+// CHECK-NEXT:    | |-CXXRecordDecl {{.*}} <col:3> col:3{{( imported)?}} 
implicit{{( <undeserialized declarations>)?}} class definition
+// CHECK-NEXT:    | | |-DefinitionData lambda empty standard_layout 
trivially_copyable literal can_const_default_init
+// CHECK-NEXT:    | | | |-DefaultConstructor defaulted_is_constexpr
+// CHECK-NEXT:    | | | |-CopyConstructor simple trivial has_const_param 
needs_implicit implicit_has_const_param
+// CHECK-NEXT:    | | | |-MoveConstructor exists simple trivial needs_implicit
+// CHECK-NEXT:    | | | |-CopyAssignment trivial has_const_param 
needs_implicit implicit_has_const_param
+// CHECK-NEXT:    | | | |-MoveAssignment
+// CHECK-NEXT:    | | | `-Destructor simple irrelevant trivial needs_implicit
+// CHECK-NEXT:    | | `-CXXMethodDecl {{.*}} <col:5, col:8> col:3{{( 
imported)?}} operator() 'auto () const -> auto' inline
+// CHECK-NEXT:    | |   `-CompoundStmt {{.*}} <col:7, col:8>
+// CHECK-NEXT:    | `-CompoundStmt {{.*}} <col:7, col:8>
+// CHECK-NEXT:    |-LambdaExpr {{.*}} <line:27:3, col:19> '(lambda at 
{{.*}}ast-dump-lambda.cpp:27:3)'
+// CHECK-NEXT:    | |-CXXRecordDecl {{.*}} <col:3> col:3{{( imported)?}} 
implicit{{( <undeserialized declarations>)?}} class definition
+// CHECK-NEXT:    | | |-DefinitionData lambda empty standard_layout 
trivially_copyable literal can_const_default_init
+// CHECK-NEXT:    | | | |-DefaultConstructor defaulted_is_constexpr
+// CHECK-NEXT:    | | | |-CopyConstructor simple trivial has_const_param 
needs_implicit implicit_has_const_param
+// CHECK-NEXT:    | | | |-MoveConstructor exists simple trivial needs_implicit
+// CHECK-NEXT:    | | | |-CopyAssignment trivial has_const_param 
needs_implicit implicit_has_const_param
+// CHECK-NEXT:    | | | |-MoveAssignment
+// CHECK-NEXT:    | | | `-Destructor simple irrelevant trivial needs_implicit
+// CHECK-NEXT:    | | `-CXXMethodDecl {{.*}} <col:5, col:19> col:3{{( 
imported)?}} operator() 'auto () const -> auto' inline
+// CHECK-NEXT:    | |   `-CompoundStmt {{.*}} <col:7, col:19>
+// CHECK-NEXT:    | |     `-ReturnStmt {{.*}} <col:9, col:16>
+// CHECK-NEXT:    | |       `-DeclRefExpr {{.*}} <col:16> 'const int' lvalue 
Var {{.*}} 'b' 'int'
+// CHECK-NEXT:    | `-CompoundStmt {{.*}} <col:7, col:19>
+// CHECK-NEXT:    |   `-ReturnStmt {{.*}} <col:9, col:16>
+// CHECK-NEXT:    |     `-DeclRefExpr {{.*}} <col:16> 'const int' lvalue Var 
{{.*}} 'b' 'int'
+// CHECK-NEXT:    |-LambdaExpr {{.*}} <line:28:3, col:8> '(lambda at 
{{.*}}ast-dump-lambda.cpp:28:3)'
+// CHECK-NEXT:    | |-CXXRecordDecl {{.*}} <col:3> col:3{{( imported)?}} 
implicit{{( <undeserialized declarations>)?}} class definition
+// CHECK-NEXT:    | | |-DefinitionData lambda empty standard_layout 
trivially_copyable literal can_const_default_init
+// CHECK-NEXT:    | | | |-DefaultConstructor defaulted_is_constexpr
+// CHECK-NEXT:    | | | |-CopyConstructor simple trivial has_const_param 
needs_implicit implicit_has_const_param
+// CHECK-NEXT:    | | | |-MoveConstructor exists simple trivial needs_implicit
+// CHECK-NEXT:    | | | |-CopyAssignment trivial has_const_param 
needs_implicit implicit_has_const_param
+// CHECK-NEXT:    | | | |-MoveAssignment
+// CHECK-NEXT:    | | | `-Destructor simple irrelevant trivial needs_implicit
+// CHECK-NEXT:    | | `-CXXMethodDecl {{.*}} <col:5, col:8> col:3{{( 
imported)?}} operator() 'auto () const -> auto' inline
+// CHECK-NEXT:    | |   `-CompoundStmt {{.*}} <col:7, col:8>
+// CHECK-NEXT:    | `-CompoundStmt {{.*}} <col:7, col:8>
+// CHECK-NEXT:    |-LambdaExpr {{.*}} <line:29:3, col:19> '(lambda at 
{{.*}}ast-dump-lambda.cpp:29:3)'
+// CHECK-NEXT:    | |-CXXRecordDecl {{.*}} <col:3> col:3{{( imported)?}} 
implicit{{( <undeserialized declarations>)?}} class definition
+// CHECK-NEXT:    | | |-DefinitionData lambda empty standard_layout 
trivially_copyable literal can_const_default_init
+// CHECK-NEXT:    | | | |-DefaultConstructor defaulted_is_constexpr
+// CHECK-NEXT:    | | | |-CopyConstructor simple trivial has_const_param 
needs_implicit implicit_has_const_param
+// CHECK-NEXT:    | | | |-MoveConstructor exists simple trivial needs_implicit
+// CHECK-NEXT:    | | | |-CopyAssignment trivial has_const_param 
needs_implicit implicit_has_const_param
+// CHECK-NEXT:    | | | |-MoveAssignment
+// CHECK-NEXT:    | | | `-Destructor simple irrelevant trivial needs_implicit
+// CHECK-NEXT:    | | `-CXXMethodDecl {{.*}} <col:5, col:19> col:3{{( 
imported)?}} operator() 'auto () const -> auto' inline
+// CHECK-NEXT:    | |   `-CompoundStmt {{.*}} <col:7, col:19>
+// CHECK-NEXT:    | |     `-ReturnStmt {{.*}} <col:9, col:16>
+// CHECK-NEXT:    | |       `-DeclRefExpr {{.*}} <col:16> 'int' lvalue Var 
{{.*}} 'c' 'int'
+// CHECK-NEXT:    | `-CompoundStmt {{.*}} <col:7, col:19>
+// CHECK-NEXT:    |   `-ReturnStmt {{.*}} <col:9, col:16>
+// CHECK-NEXT:    |     `-DeclRefExpr {{.*}} <col:16> 'int' lvalue Var {{.*}} 
'c' 'int'
+// CHECK-NEXT:    |-LambdaExpr {{.*}} <line:30:3, col:27> '(lambda at 
{{.*}}ast-dump-lambda.cpp:30:3)'
+// CHECK-NEXT:    | |-CXXRecordDecl {{.*}} <col:3> col:3{{( imported)?}} 
implicit{{( <undeserialized declarations>)?}} class definition
+// CHECK-NEXT:    | | |-DefinitionData lambda trivially_copyable literal 
can_const_default_init
+// CHECK-NEXT:    | | | |-DefaultConstructor
+// CHECK-NEXT:    | | | |-CopyConstructor simple trivial has_const_param 
needs_implicit implicit_has_const_param
+// CHECK-NEXT:    | | | |-MoveConstructor exists simple trivial needs_implicit
+// CHECK-NEXT:    | | | |-CopyAssignment trivial has_const_param 
needs_implicit implicit_has_const_param
+// CHECK-NEXT:    | | | |-MoveAssignment
+// CHECK-NEXT:    | | | `-Destructor simple irrelevant trivial needs_implicit
+// CHECK-NEXT:    | | |-CXXMethodDecl {{.*}} <col:9, col:27> col:3{{( 
imported)?}} operator() 'auto () const -> auto' inline
+// CHECK-NEXT:    | | | `-CompoundStmt {{.*}} <col:11, col:27>
+// CHECK-NEXT:    | | |   `-ReturnStmt {{.*}} <col:13, col:24>
+// CHECK-NEXT:    | | |     `-BinaryOperator {{.*}} <col:20, col:24> 'int' '+'
+// CHECK-NEXT:    | | |       |-ImplicitCastExpr {{.*}} <col:20> 'int' 
<LValueToRValue>
+// CHECK-NEXT:    | | |       | `-DeclRefExpr {{.*}} <col:20> 'const int' 
lvalue Var {{.*}} 'b' 'int'
+// CHECK-NEXT:    | | |       `-ImplicitCastExpr {{.*}} <col:24> 'int' 
<LValueToRValue>
+// CHECK-NEXT:    | | |         `-DeclRefExpr {{.*}} <col:24> 'int' lvalue Var 
{{.*}} 'c' 'int'
+// CHECK-NEXT:    | | |-FieldDecl {{.*}} <col:4> col:4{{( imported)?}} 
implicit 'int'
+// CHECK-NEXT:    | | `-FieldDecl {{.*}} <col:8> col:8{{( imported)?}} 
implicit 'int &'
+// CHECK-NEXT:    | |-ImplicitCastExpr {{.*}} <col:4> 'int' <LValueToRValue>
+// CHECK-NEXT:    | | `-DeclRefExpr {{.*}} <col:4> 'int' lvalue Var {{.*}} 'b' 
'int'
+// CHECK-NEXT:    | |-DeclRefExpr {{.*}} <col:8> 'int' lvalue Var {{.*}} 'c' 
'int'
+// CHECK-NEXT:    | `-CompoundStmt {{.*}} <col:11, col:27>
+// CHECK-NEXT:    |   `-ReturnStmt {{.*}} <col:13, col:24>
+// CHECK-NEXT:    |     `-BinaryOperator {{.*}} <col:20, col:24> 'int' '+'
+// CHECK-NEXT:    |       |-ImplicitCastExpr {{.*}} <col:20> 'int' 
<LValueToRValue>
+// CHECK-NEXT:    |       | `-DeclRefExpr {{.*}} <col:20> 'const int' lvalue 
Var {{.*}} 'b' 'int'
+// CHECK-NEXT:    |       `-ImplicitCastExpr {{.*}} <col:24> 'int' 
<LValueToRValue>
+// CHECK-NEXT:    |         `-DeclRefExpr {{.*}} <col:24> 'int' lvalue Var 
{{.*}} 'c' 'int'
+// CHECK-NEXT:    |-LambdaExpr {{.*}} <line:31:3, col:19> '(lambda at 
{{.*}}ast-dump-lambda.cpp:31:3)'
+// CHECK-NEXT:    | |-CXXRecordDecl {{.*}} <col:3> col:3{{( imported)?}} 
implicit{{( <undeserialized declarations>)?}} class definition
+// CHECK-NEXT:    | | |-DefinitionData lambda standard_layout 
trivially_copyable can_const_default_init
+// CHECK-NEXT:    | | | |-DefaultConstructor
+// CHECK-NEXT:    | | | |-CopyConstructor simple trivial has_const_param 
needs_implicit implicit_has_const_param
+// CHECK-NEXT:    | | | |-MoveConstructor exists simple trivial needs_implicit
+// CHECK-NEXT:    | | | |-CopyAssignment trivial has_const_param 
needs_implicit implicit_has_const_param
+// CHECK-NEXT:    | | | |-MoveAssignment
+// CHECK-NEXT:    | | | `-Destructor simple irrelevant trivial needs_implicit
+// CHECK-NEXT:    | | |-CXXMethodDecl {{.*}} <col:16, col:19> col:3{{( 
imported)?}} operator() 'auto () const -> auto' inline
+// CHECK-NEXT:    | | | `-CompoundStmt {{.*}} <col:18, col:19>
+// CHECK-NEXT:    | | |-FieldDecl {{.*}} <col:4> col:4{{( imported)?}} 
implicit 'Ts...'
+// CHECK-NEXT:    | | `-FieldDecl {{.*}} <col:10> col:10{{( imported)?}} 
implicit 'int':'int'
+// CHECK-NEXT:    | |-ParenListExpr {{.*}} <col:4> 'NULL TYPE'
+// CHECK-NEXT:    | | `-DeclRefExpr {{.*}} <col:4> 'Ts' lvalue ParmVar {{.*}} 
'a' 'Ts...'
+// CHECK-NEXT:    | |-IntegerLiteral {{.*}} <col:14> 'int' 12
+// CHECK-NEXT:    | `-CompoundStmt {{.*}} <col:18, col:19>
+// CHECK-NEXT:    |-LambdaExpr {{.*}} <line:32:3, col:19> '(lambda at 
{{.*}}ast-dump-lambda.cpp:32:3)'
+// CHECK-NEXT:    | |-CXXRecordDecl {{.*}} <col:3> col:3{{( imported)?}} 
implicit{{( <undeserialized declarations>)?}} class definition
+// CHECK-NEXT:    | | |-DefinitionData lambda empty standard_layout 
trivially_copyable literal can_const_default_init
+// CHECK-NEXT:    | | | |-DefaultConstructor defaulted_is_constexpr
+// CHECK-NEXT:    | | | |-CopyConstructor simple trivial has_const_param 
needs_implicit implicit_has_const_param
+// CHECK-NEXT:    | | | |-MoveConstructor exists simple trivial needs_implicit
+// CHECK-NEXT:    | | | |-CopyAssignment trivial has_const_param 
needs_implicit implicit_has_const_param
+// CHECK-NEXT:    | | | |-MoveAssignment
+// CHECK-NEXT:    | | | `-Destructor simple irrelevant trivial needs_implicit
+// CHECK-NEXT:    | | |-CXXMethodDecl {{.*}} <col:8, col:19> col:3{{( 
imported)?}} constexpr operator() 'auto () const' inline
+// CHECK-NEXT:    | | | `-CompoundStmt {{.*}} <col:18, col:19>
+// CHECK-NEXT:    | | |-CXXConversionDecl {{.*}} <col:3, col:19> col:3{{( 
imported)?}} implicit constexpr operator auto (*)() 'auto (*() const 
noexcept)()' inline
+// CHECK-NEXT:    | | `-CXXMethodDecl {{.*}} <col:3, col:19> col:3{{( 
imported)?}} implicit __invoke 'auto ()' static inline
+// CHECK-NEXT:    | `-CompoundStmt {{.*}} <col:18, col:19>
+// CHECK-NEXT:    |-LambdaExpr {{.*}} <line:33:3, col:17> '(lambda at 
{{.*}}ast-dump-lambda.cpp:33:3)'
+// CHECK-NEXT:    | |-CXXRecordDecl {{.*}} <col:3> col:3{{( imported)?}} 
implicit{{( <undeserialized declarations>)?}} class definition
+// CHECK-NEXT:    | | |-DefinitionData lambda empty standard_layout 
trivially_copyable literal can_const_default_init
+// CHECK-NEXT:    | | | |-DefaultConstructor defaulted_is_constexpr
+// CHECK-NEXT:    | | | |-CopyConstructor simple trivial has_const_param 
needs_implicit implicit_has_const_param
+// CHECK-NEXT:    | | | |-MoveConstructor exists simple trivial needs_implicit
+// CHECK-NEXT:    | | | |-CopyAssignment trivial has_const_param 
needs_implicit implicit_has_const_param
+// CHECK-NEXT:    | | | |-MoveAssignment
+// CHECK-NEXT:    | | | `-Destructor simple irrelevant trivial needs_implicit
+// CHECK-NEXT:    | | |-CXXMethodDecl {{.*}} <col:8, col:17> col:3{{( 
imported)?}} operator() 'auto ()' inline
+// CHECK-NEXT:    | | | `-CompoundStmt {{.*}} <col:16, col:17>
+// CHECK-NEXT:    | | |-CXXConversionDecl {{.*}} <col:3, col:17> col:3{{( 
imported)?}} implicit constexpr operator auto (*)() 'auto (*() const 
noexcept)()' inline
+// CHECK-NEXT:    | | `-CXXMethodDecl {{.*}} <col:3, col:17> col:3{{( 
imported)?}} implicit __invoke 'auto ()' static inline
+// CHECK-NEXT:    | `-CompoundStmt {{.*}} <col:16, col:17>
+// CHECK-NEXT:    |-LambdaExpr {{.*}} <line:34:3, col:18> '(lambda at 
{{.*}}ast-dump-lambda.cpp:34:3)'
+// CHECK-NEXT:    | |-CXXRecordDecl {{.*}} <col:3> col:3{{( imported)?}} 
implicit{{( <undeserialized declarations>)?}} class definition
+// CHECK-NEXT:    | | |-DefinitionData lambda empty standard_layout 
trivially_copyable literal can_const_default_init
+// CHECK-NEXT:    | | | |-DefaultConstructor defaulted_is_constexpr
+// CHECK-NEXT:    | | | |-CopyConstructor simple trivial has_const_param 
needs_implicit implicit_has_const_param
+// CHECK-NEXT:    | | | |-MoveConstructor exists simple trivial needs_implicit
+// CHECK-NEXT:    | | | |-CopyAssignment trivial has_const_param 
needs_implicit implicit_has_const_param
+// CHECK-NEXT:    | | | |-MoveAssignment
+// CHECK-NEXT:    | | | `-Destructor simple irrelevant trivial needs_implicit
+// CHECK-NEXT:    | | |-CXXMethodDecl {{.*}} <col:8, col:18> col:3{{( 
imported)?}} operator() 'auto () const noexcept' inline
+// CHECK-NEXT:    | | | `-CompoundStmt {{.*}} <col:17, col:18>
+// CHECK-NEXT:    | | |-CXXConversionDecl {{.*}} <col:3, col:18> col:3{{( 
imported)?}} implicit constexpr operator auto (*)() noexcept 'auto (*() const 
noexcept)() noexcept' inline
+// CHECK-NEXT:    | | `-CXXMethodDecl {{.*}} <col:3, col:18> col:3{{( 
imported)?}} implicit __invoke 'auto () noexcept' static inline
+// CHECK-NEXT:    | `-CompoundStmt {{.*}} <col:17, col:18>
+// CHECK-NEXT:    `-LambdaExpr {{.*}} <line:35:3, col:27> '(lambda at 
{{.*}}ast-dump-lambda.cpp:35:3)'
+// CHECK-NEXT:      |-CXXRecordDecl {{.*}} <col:3> col:3{{( imported)?}} 
implicit{{( <undeserialized declarations>)?}} class definition
+// CHECK-NEXT:      | |-DefinitionData lambda empty standard_layout 
trivially_copyable literal can_const_default_init
+// CHECK-NEXT:      | | |-DefaultConstructor defaulted_is_constexpr
+// CHECK-NEXT:      | | |-CopyConstructor simple trivial has_const_param 
needs_implicit implicit_has_const_param
+// CHECK-NEXT:      | | |-MoveConstructor exists simple trivial needs_implicit
+// CHECK-NEXT:      | | |-CopyAssignment trivial has_const_param 
needs_implicit implicit_has_const_param
+// CHECK-NEXT:      | | |-MoveAssignment
+// CHECK-NEXT:      | | `-Destructor simple irrelevant trivial needs_implicit
+// CHECK-NEXT:      | |-CXXMethodDecl {{.*}} <col:11, col:27> col:3{{( 
imported)?}} operator() 'auto () const -> int' inline
+// CHECK-NEXT:      | | `-CompoundStmt {{.*}} <col:15, col:27>
+// CHECK-NEXT:      | |   `-ReturnStmt {{.*}} <col:17, col:24>
+// CHECK-NEXT:      | |     `-IntegerLiteral {{.*}} <col:24> 'int' 0
+// CHECK-NEXT:      | |-CXXConversionDecl {{.*}} <col:3, col:27> col:3{{( 
imported)?}} implicit constexpr operator int (*)() 'auto (*() const noexcept)() 
-> int' inline
+// CHECK-NEXT:      | `-CXXMethodDecl {{.*}} <col:3, col:27> col:3{{( 
imported)?}} implicit __invoke 'auto () -> int' static inline
+// CHECK-NEXT:      `-CompoundStmt {{.*}} <col:15, col:27>
+// CHECK-NEXT:        `-ReturnStmt {{.*}} <col:17, col:24>
+// CHECK-NEXT:          `-IntegerLiteral {{.*}} <col:24> 'int' 0


        
_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to