[clang] [Clang] Fix handling of explicit parameters in `SemaLambda` (PR #168558)

Willem Kaufmann via cfe-commits cfe-commits at lists.llvm.org
Wed Nov 19 07:28:52 PST 2025


https://github.com/WillemKauf updated https://github.com/llvm/llvm-project/pull/168558

>From 95a18725b589a6403a91bde0bac888d64a43c947 Mon Sep 17 00:00:00 2001
From: Willem Kaufmann <willem.kaufmann at gmail.com>
Date: Tue, 18 Nov 2025 10:30:55 -0500
Subject: [PATCH] [Clang] Fix handling of explicit parameters in `SemaLambda`

Previously, the presence of an explicit parameter list was detected by
querying `getNumTypeObjects()` from the `Declarator` block of the lambda
definition. This breaks for lambdas which do not have a parameter list
but _do_ have a trailing return type; that is, both of

```
[]() -> int { return 0; };
[] -> int { return 0; };
```

would return `true` when inspecting `LambdaExpr::hasExplicitParameters()`.

Fix this by instead querying the `LParenLoc()` from the `Declarator`'s
`FunctionTypeInfo`. If `isValid() == true`, then an explicit parameter list
must be present, and if it is `false`, then it is not.

This commit also adds `hasExplicitParameters` as an attribute to a
`LambdaExpr`'s JSON AST dump. A new test (`ast-dump-lambda-json.cpp`)
is also added to validate the fix and presence of the new attribute in
the output. `ast-dump-expr-json.cpp` is also updated to validate the new
attribute.
---
 clang/docs/ReleaseNotes.rst              |    3 +
 clang/include/clang/AST/JSONNodeDumper.h |    1 +
 clang/lib/AST/JSONNodeDumper.cpp         |    4 +
 clang/lib/Sema/SemaLambda.cpp            |   18 +-
 clang/test/AST/ast-dump-expr-json.cpp    |   15 +
 clang/test/AST/ast-dump-lambda-json.cpp  | 3387 ++++++++++++++++++++++
 6 files changed, 3419 insertions(+), 9 deletions(-)
 create mode 100644 clang/test/AST/ast-dump-lambda-json.cpp

diff --git a/clang/docs/ReleaseNotes.rst b/clang/docs/ReleaseNotes.rst
index c2da61e4d066a..9239bbacdb515 100644
--- a/clang/docs/ReleaseNotes.rst
+++ b/clang/docs/ReleaseNotes.rst
@@ -668,6 +668,9 @@ AST Matchers
 
 - ``hasConditionVariableStatement`` now supports ``for`` loop, ``while`` loop
   and ``switch`` statements.
+- Fixed detection of explicit parameter lists in ``LambdaExpr``.
+- Added ``hasExplicitParameters`` for ``LambdaExpr`` as an output attribute to
+  AST JSON dumps.
 
 clang-format
 ------------
diff --git a/clang/include/clang/AST/JSONNodeDumper.h b/clang/include/clang/AST/JSONNodeDumper.h
index d364795a05811..cc165dc6a48ac 100644
--- a/clang/include/clang/AST/JSONNodeDumper.h
+++ b/clang/include/clang/AST/JSONNodeDumper.h
@@ -315,6 +315,7 @@ class JSONNodeDumper
   void VisitRequiresExpr(const RequiresExpr *RE);
   void VisitCXXDefaultArgExpr(const CXXDefaultArgExpr *Node);
   void VisitCXXDefaultInitExpr(const CXXDefaultInitExpr *Node);
+  void VisitLambdaExpr(const LambdaExpr *LE);
 
   void VisitObjCEncodeExpr(const ObjCEncodeExpr *OEE);
   void VisitObjCMessageExpr(const ObjCMessageExpr *OME);
diff --git a/clang/lib/AST/JSONNodeDumper.cpp b/clang/lib/AST/JSONNodeDumper.cpp
index 89abf888cbbba..715e1e0989422 100644
--- a/clang/lib/AST/JSONNodeDumper.cpp
+++ b/clang/lib/AST/JSONNodeDumper.cpp
@@ -1607,6 +1607,10 @@ void JSONNodeDumper::VisitCXXDefaultInitExpr(const CXXDefaultInitExpr *Node) {
   attributeOnlyIfTrue("hasRewrittenInit", Node->hasRewrittenInit());
 }
 
+void JSONNodeDumper::VisitLambdaExpr(const LambdaExpr *LE) {
+  JOS.attribute("hasExplicitParameters", LE->hasExplicitParameters());
+}
+
 void JSONNodeDumper::VisitCXXDependentScopeMemberExpr(
     const CXXDependentScopeMemberExpr *DSME) {
   JOS.attribute("isArrow", DSME->isArrow());
diff --git a/clang/lib/Sema/SemaLambda.cpp b/clang/lib/Sema/SemaLambda.cpp
index fbc2e7eb30676..f65c55a209622 100644
--- a/clang/lib/Sema/SemaLambda.cpp
+++ b/clang/lib/Sema/SemaLambda.cpp
@@ -1439,16 +1439,16 @@ void Sema::ActOnStartOfLambdaDefinition(LambdaIntroducer &Intro,
   TypeSourceInfo *MethodTyInfo = getLambdaType(
       *this, Intro, ParamInfo, getCurScope(), TypeLoc, ExplicitResultType);
 
-  LSI->ExplicitParams = ParamInfo.getNumTypeObjects() != 0;
-
-  if (ParamInfo.isFunctionDeclarator() != 0 &&
-      !FTIHasSingleVoidParameter(ParamInfo.getFunctionTypeInfo())) {
+  if (ParamInfo.isFunctionDeclarator() != 0) {
     const auto &FTI = ParamInfo.getFunctionTypeInfo();
-    Params.reserve(Params.size());
-    for (unsigned I = 0; I < FTI.NumParams; ++I) {
-      auto *Param = cast<ParmVarDecl>(FTI.Params[I].Param);
-      Param->setScopeInfo(0, Params.size());
-      Params.push_back(Param);
+    LSI->ExplicitParams = FTI.getLParenLoc().isValid();
+    if (!FTIHasSingleVoidParameter(FTI)) {
+      Params.reserve(Params.size());
+      for (unsigned I = 0; I < FTI.NumParams; ++I) {
+        auto *Param = cast<ParmVarDecl>(FTI.Params[I].Param);
+        Param->setScopeInfo(0, Params.size());
+        Params.push_back(Param);
+      }
     }
   }
 
diff --git a/clang/test/AST/ast-dump-expr-json.cpp b/clang/test/AST/ast-dump-expr-json.cpp
index 6293f8cb3fe0e..1415cecd58d36 100644
--- a/clang/test/AST/ast-dump-expr-json.cpp
+++ b/clang/test/AST/ast-dump-expr-json.cpp
@@ -3889,6 +3889,7 @@ void TestNonADLCall3() {
 // CHECK-NEXT:                 "qualType": "(lambda at {{.*}}:98:7)"
 // CHECK-NEXT:                },
 // CHECK-NEXT:                "valueCategory": "prvalue",
+// CHECK-NEXT:                "hasExplicitParameters": false,
 // CHECK-NEXT:                "inner": [
 // CHECK-NEXT:                 {
 // CHECK-NEXT:                  "id": "0x{{.*}}",
@@ -4098,6 +4099,7 @@ void TestNonADLCall3() {
 // CHECK-NEXT:                 "qualType": "(lambda at {{.*}}:99:7)"
 // CHECK-NEXT:                },
 // CHECK-NEXT:                "valueCategory": "prvalue",
+// CHECK-NEXT:                "hasExplicitParameters": false,
 // CHECK-NEXT:                "inner": [
 // CHECK-NEXT:                 {
 // CHECK-NEXT:                  "id": "0x{{.*}}",
@@ -4413,6 +4415,7 @@ void TestNonADLCall3() {
 // CHECK-NEXT:         "qualType": "(lambda at {{.*}}:105:3)"
 // CHECK-NEXT:        },
 // CHECK-NEXT:        "valueCategory": "prvalue",
+// CHECK-NEXT:        "hasExplicitParameters": true,
 // CHECK-NEXT:        "inner": [
 // CHECK-NEXT:         {
 // CHECK-NEXT:          "id": "0x{{.*}}",
@@ -4615,6 +4618,7 @@ void TestNonADLCall3() {
 // CHECK-NEXT:         "qualType": "(lambda at {{.*}}:106:3)"
 // CHECK-NEXT:        },
 // CHECK-NEXT:        "valueCategory": "prvalue",
+// CHECK-NEXT:        "hasExplicitParameters": true,
 // CHECK-NEXT:        "inner": [
 // CHECK-NEXT:         {
 // CHECK-NEXT:          "id": "0x{{.*}}",
@@ -4871,6 +4875,7 @@ void TestNonADLCall3() {
 // CHECK-NEXT:         "qualType": "(lambda at {{.*}}:107:3)"
 // CHECK-NEXT:        },
 // CHECK-NEXT:        "valueCategory": "prvalue",
+// CHECK-NEXT:        "hasExplicitParameters": false,
 // CHECK-NEXT:        "inner": [
 // CHECK-NEXT:         {
 // CHECK-NEXT:          "id": "0x{{.*}}",
@@ -5088,6 +5093,7 @@ void TestNonADLCall3() {
 // CHECK-NEXT:         "qualType": "(lambda at {{.*}}:108:3)"
 // CHECK-NEXT:        },
 // CHECK-NEXT:        "valueCategory": "prvalue",
+// CHECK-NEXT:        "hasExplicitParameters": false,
 // CHECK-NEXT:        "inner": [
 // CHECK-NEXT:         {
 // CHECK-NEXT:          "id": "0x{{.*}}",
@@ -5234,6 +5240,7 @@ void TestNonADLCall3() {
 // CHECK-NEXT:         "qualType": "(lambda at {{.*}}:109:3)"
 // CHECK-NEXT:        },
 // CHECK-NEXT:        "valueCategory": "prvalue",
+// CHECK-NEXT:        "hasExplicitParameters": false,
 // CHECK-NEXT:        "inner": [
 // CHECK-NEXT:         {
 // CHECK-NEXT:          "id": "0x{{.*}}",
@@ -5476,6 +5483,7 @@ void TestNonADLCall3() {
 // CHECK-NEXT:         "qualType": "(lambda at {{.*}}:110:3)"
 // CHECK-NEXT:        },
 // CHECK-NEXT:        "valueCategory": "prvalue",
+// CHECK-NEXT:        "hasExplicitParameters": false,
 // CHECK-NEXT:        "inner": [
 // CHECK-NEXT:         {
 // CHECK-NEXT:          "id": "0x{{.*}}",
@@ -5622,6 +5630,7 @@ void TestNonADLCall3() {
 // CHECK-NEXT:         "qualType": "(lambda at {{.*}}:111:3)"
 // CHECK-NEXT:        },
 // CHECK-NEXT:        "valueCategory": "prvalue",
+// CHECK-NEXT:        "hasExplicitParameters": false,
 // CHECK-NEXT:        "inner": [
 // CHECK-NEXT:         {
 // CHECK-NEXT:          "id": "0x{{.*}}",
@@ -5864,6 +5873,7 @@ void TestNonADLCall3() {
 // CHECK-NEXT:         "qualType": "(lambda at {{.*}}:112:3)"
 // CHECK-NEXT:        },
 // CHECK-NEXT:        "valueCategory": "prvalue",
+// CHECK-NEXT:        "hasExplicitParameters": false,
 // CHECK-NEXT:        "inner": [
 // CHECK-NEXT:         {
 // CHECK-NEXT:          "id": "0x{{.*}}",
@@ -6425,6 +6435,7 @@ void TestNonADLCall3() {
 // CHECK-NEXT:         "qualType": "(lambda at {{.*}}:113:3)"
 // CHECK-NEXT:        },
 // CHECK-NEXT:        "valueCategory": "prvalue",
+// CHECK-NEXT:        "hasExplicitParameters": false,
 // CHECK-NEXT:        "inner": [
 // CHECK-NEXT:         {
 // CHECK-NEXT:          "id": "0x{{.*}}",
@@ -6688,6 +6699,7 @@ void TestNonADLCall3() {
 // CHECK-NEXT:         "qualType": "(lambda at {{.*}}:114:3)"
 // CHECK-NEXT:        },
 // CHECK-NEXT:        "valueCategory": "prvalue",
+// CHECK-NEXT:        "hasExplicitParameters": true,
 // CHECK-NEXT:        "inner": [
 // CHECK-NEXT:         {
 // CHECK-NEXT:          "id": "0x{{.*}}",
@@ -6892,6 +6904,7 @@ void TestNonADLCall3() {
 // CHECK-NEXT:         "qualType": "(lambda at {{.*}}:115:3)"
 // CHECK-NEXT:        },
 // CHECK-NEXT:        "valueCategory": "prvalue",
+// CHECK-NEXT:        "hasExplicitParameters": true,
 // CHECK-NEXT:        "inner": [
 // CHECK-NEXT:         {
 // CHECK-NEXT:          "id": "0x{{.*}}",
@@ -7094,6 +7107,7 @@ void TestNonADLCall3() {
 // CHECK-NEXT:         "qualType": "(lambda at {{.*}}:116:3)"
 // CHECK-NEXT:        },
 // CHECK-NEXT:        "valueCategory": "prvalue",
+// CHECK-NEXT:        "hasExplicitParameters": true,
 // CHECK-NEXT:        "inner": [
 // CHECK-NEXT:         {
 // CHECK-NEXT:          "id": "0x{{.*}}",
@@ -7296,6 +7310,7 @@ void TestNonADLCall3() {
 // CHECK-NEXT:         "qualType": "(lambda at {{.*}}:117:3)"
 // CHECK-NEXT:        },
 // CHECK-NEXT:        "valueCategory": "prvalue",
+// CHECK-NEXT:        "hasExplicitParameters": true,
 // CHECK-NEXT:        "inner": [
 // CHECK-NEXT:         {
 // CHECK-NEXT:          "id": "0x{{.*}}",
diff --git a/clang/test/AST/ast-dump-lambda-json.cpp b/clang/test/AST/ast-dump-lambda-json.cpp
new file mode 100644
index 0000000000000..fc28cc8164e17
--- /dev/null
+++ b/clang/test/AST/ast-dump-lambda-json.cpp
@@ -0,0 +1,3387 @@
+// RUN: %clang_cc1 -triple x86_64-pc-linux -std=c++23 -ast-dump=json %s | FileCheck %s
+
+void Test() {
+  int a;
+  bool b;
+  char c;
+  double d;
+  []() {};
+  [] {};
+  []() -> int { return 0; };
+  [] -> int { return 0; };
+  [a,b,c,d](){};
+  [a]{};
+  [&](){};
+  struct S {
+    void f(){
+      [this] {};
+      [this]() {};
+    }
+  };
+  [](void){};
+};
+
+// NOTE: CHECK lines have been autogenerated by gen_ast_dump_json_test.py
+
+
+// CHECK-NOT: {{^}}Dumping
+// CHECK:  "kind": "TranslationUnitDecl",
+// CHECK-NEXT:  "loc": {},
+// CHECK-NEXT:  "range": {
+// CHECK-NEXT:   "begin": {},
+// CHECK-NEXT:   "end": {}
+// CHECK-NEXT:  },
+// CHECK-NEXT:  "inner": [
+// CHECK-NEXT:   {
+// CHECK-NEXT:    "id": "0x{{.*}}",
+// CHECK-NEXT:    "kind": "TypedefDecl",
+// CHECK-NEXT:    "loc": {},
+// CHECK-NEXT:    "range": {
+// CHECK-NEXT:     "begin": {},
+// CHECK-NEXT:     "end": {}
+// CHECK-NEXT:    },
+// CHECK-NEXT:    "isImplicit": true,
+// CHECK-NEXT:    "name": "__int128_t",
+// CHECK-NEXT:    "type": {
+// CHECK-NEXT:     "qualType": "__int128"
+// CHECK-NEXT:    },
+// CHECK-NEXT:    "inner": [
+// CHECK-NEXT:     {
+// CHECK-NEXT:      "id": "0x{{.*}}",
+// CHECK-NEXT:      "kind": "BuiltinType",
+// CHECK-NEXT:      "type": {
+// CHECK-NEXT:       "qualType": "__int128"
+// CHECK-NEXT:      }
+// CHECK-NEXT:     }
+// CHECK-NEXT:    ]
+// CHECK-NEXT:   },
+// CHECK-NEXT:   {
+// CHECK-NEXT:    "id": "0x{{.*}}",
+// CHECK-NEXT:    "kind": "TypedefDecl",
+// CHECK-NEXT:    "loc": {},
+// CHECK-NEXT:    "range": {
+// CHECK-NEXT:     "begin": {},
+// CHECK-NEXT:     "end": {}
+// CHECK-NEXT:    },
+// CHECK-NEXT:    "isImplicit": true,
+// CHECK-NEXT:    "name": "__uint128_t",
+// CHECK-NEXT:    "type": {
+// CHECK-NEXT:     "qualType": "unsigned __int128"
+// CHECK-NEXT:    },
+// CHECK-NEXT:    "inner": [
+// CHECK-NEXT:     {
+// CHECK-NEXT:      "id": "0x{{.*}}",
+// CHECK-NEXT:      "kind": "BuiltinType",
+// CHECK-NEXT:      "type": {
+// CHECK-NEXT:       "qualType": "unsigned __int128"
+// CHECK-NEXT:      }
+// CHECK-NEXT:     }
+// CHECK-NEXT:    ]
+// CHECK-NEXT:   },
+// CHECK-NEXT:   {
+// CHECK-NEXT:    "id": "0x{{.*}}",
+// CHECK-NEXT:    "kind": "TypedefDecl",
+// CHECK-NEXT:    "loc": {},
+// CHECK-NEXT:    "range": {
+// CHECK-NEXT:     "begin": {},
+// CHECK-NEXT:     "end": {}
+// CHECK-NEXT:    },
+// CHECK-NEXT:    "isImplicit": true,
+// CHECK-NEXT:    "name": "__NSConstantString",
+// CHECK-NEXT:    "type": {
+// CHECK-NEXT:     "qualType": "__NSConstantString_tag"
+// CHECK-NEXT:    },
+// CHECK-NEXT:    "inner": [
+// CHECK-NEXT:     {
+// CHECK-NEXT:      "id": "0x{{.*}}",
+// CHECK-NEXT:      "kind": "RecordType",
+// CHECK-NEXT:      "type": {
+// CHECK-NEXT:       "qualType": "__NSConstantString_tag"
+// CHECK-NEXT:      },
+// CHECK-NEXT:      "decl": {
+// CHECK-NEXT:       "id": "0x{{.*}}",
+// CHECK-NEXT:       "kind": "CXXRecordDecl",
+// CHECK-NEXT:       "name": "__NSConstantString_tag"
+// CHECK-NEXT:      }
+// CHECK-NEXT:     }
+// CHECK-NEXT:    ]
+// CHECK-NEXT:   },
+// CHECK-NEXT:   {
+// CHECK-NEXT:    "id": "0x{{.*}}",
+// CHECK-NEXT:    "kind": "TypedefDecl",
+// CHECK-NEXT:    "loc": {},
+// CHECK-NEXT:    "range": {
+// CHECK-NEXT:     "begin": {},
+// CHECK-NEXT:     "end": {}
+// CHECK-NEXT:    },
+// CHECK-NEXT:    "isImplicit": true,
+// CHECK-NEXT:    "name": "__builtin_ms_va_list",
+// CHECK-NEXT:    "type": {
+// CHECK-NEXT:     "qualType": "char *"
+// CHECK-NEXT:    },
+// CHECK-NEXT:    "inner": [
+// CHECK-NEXT:     {
+// CHECK-NEXT:      "id": "0x{{.*}}",
+// CHECK-NEXT:      "kind": "PointerType",
+// CHECK-NEXT:      "type": {
+// CHECK-NEXT:       "qualType": "char *"
+// CHECK-NEXT:      },
+// CHECK-NEXT:      "inner": [
+// CHECK-NEXT:       {
+// CHECK-NEXT:        "id": "0x{{.*}}",
+// CHECK-NEXT:        "kind": "BuiltinType",
+// CHECK-NEXT:        "type": {
+// CHECK-NEXT:         "qualType": "char"
+// CHECK-NEXT:        }
+// CHECK-NEXT:       }
+// CHECK-NEXT:      ]
+// CHECK-NEXT:     }
+// CHECK-NEXT:    ]
+// CHECK-NEXT:   },
+// CHECK-NEXT:   {
+// CHECK-NEXT:    "id": "0x{{.*}}",
+// CHECK-NEXT:    "kind": "TypedefDecl",
+// CHECK-NEXT:    "loc": {},
+// CHECK-NEXT:    "range": {
+// CHECK-NEXT:     "begin": {},
+// CHECK-NEXT:     "end": {}
+// CHECK-NEXT:    },
+// CHECK-NEXT:    "isImplicit": true,
+// CHECK-NEXT:    "name": "__builtin_va_list",
+// CHECK-NEXT:    "type": {
+// CHECK-NEXT:     "qualType": "__va_list_tag[1]"
+// CHECK-NEXT:    },
+// CHECK-NEXT:    "inner": [
+// CHECK-NEXT:     {
+// CHECK-NEXT:      "id": "0x{{.*}}",
+// CHECK-NEXT:      "kind": "ConstantArrayType",
+// CHECK-NEXT:      "type": {
+// CHECK-NEXT:       "qualType": "__va_list_tag[1]"
+// CHECK-NEXT:      },
+// CHECK-NEXT:      "size": 1,
+// CHECK-NEXT:      "inner": [
+// CHECK-NEXT:       {
+// CHECK-NEXT:        "id": "0x{{.*}}",
+// CHECK-NEXT:        "kind": "RecordType",
+// CHECK-NEXT:        "type": {
+// CHECK-NEXT:         "qualType": "__va_list_tag"
+// CHECK-NEXT:        },
+// CHECK-NEXT:        "decl": {
+// CHECK-NEXT:         "id": "0x{{.*}}",
+// CHECK-NEXT:         "kind": "CXXRecordDecl",
+// CHECK-NEXT:         "name": "__va_list_tag"
+// CHECK-NEXT:        }
+// CHECK-NEXT:       }
+// CHECK-NEXT:      ]
+// CHECK-NEXT:     }
+// CHECK-NEXT:    ]
+// CHECK-NEXT:   },
+// CHECK-NEXT:   {
+// CHECK-NEXT:    "id": "0x{{.*}}",
+// CHECK-NEXT:    "kind": "FunctionDecl",
+// CHECK-NEXT:    "loc": {
+// CHECK-NEXT:     "offset": 93,
+// CHECK-NEXT:     "file": "{{.*}}",
+// CHECK-NEXT:     "line": 3,
+// CHECK-NEXT:     "col": 6,
+// CHECK-NEXT:     "tokLen": 4
+// CHECK-NEXT:    },
+// CHECK-NEXT:    "range": {
+// CHECK-NEXT:     "begin": {
+// CHECK-NEXT:      "offset": 88,
+// CHECK-NEXT:      "col": 1,
+// CHECK-NEXT:      "tokLen": 4
+// CHECK-NEXT:     },
+// CHECK-NEXT:     "end": {
+// CHECK-NEXT:      "offset": 344,
+// CHECK-NEXT:      "line": 22,
+// CHECK-NEXT:      "col": 1,
+// CHECK-NEXT:      "tokLen": 1
+// CHECK-NEXT:     }
+// CHECK-NEXT:    },
+// CHECK-NEXT:    "name": "Test",
+// CHECK-NEXT:    "mangledName": "_Z4Testv",
+// CHECK-NEXT:    "type": {
+// CHECK-NEXT:     "qualType": "void ()"
+// CHECK-NEXT:    },
+// CHECK-NEXT:    "inner": [
+// CHECK-NEXT:     {
+// CHECK-NEXT:      "id": "0x{{.*}}",
+// CHECK-NEXT:      "kind": "CompoundStmt",
+// CHECK-NEXT:      "range": {
+// CHECK-NEXT:       "begin": {
+// CHECK-NEXT:        "offset": 100,
+// CHECK-NEXT:        "line": 3,
+// CHECK-NEXT:        "col": 13,
+// CHECK-NEXT:        "tokLen": 1
+// CHECK-NEXT:       },
+// CHECK-NEXT:       "end": {
+// CHECK-NEXT:        "offset": 344,
+// CHECK-NEXT:        "line": 22,
+// CHECK-NEXT:        "col": 1,
+// CHECK-NEXT:        "tokLen": 1
+// CHECK-NEXT:       }
+// CHECK-NEXT:      },
+// CHECK-NEXT:      "inner": [
+// CHECK-NEXT:       {
+// CHECK-NEXT:        "id": "0x{{.*}}",
+// CHECK-NEXT:        "kind": "DeclStmt",
+// CHECK-NEXT:        "range": {
+// CHECK-NEXT:         "begin": {
+// CHECK-NEXT:          "offset": 104,
+// CHECK-NEXT:          "line": 4,
+// CHECK-NEXT:          "col": 3,
+// CHECK-NEXT:          "tokLen": 3
+// CHECK-NEXT:         },
+// CHECK-NEXT:         "end": {
+// CHECK-NEXT:          "offset": 109,
+// CHECK-NEXT:          "col": 8,
+// CHECK-NEXT:          "tokLen": 1
+// CHECK-NEXT:         }
+// CHECK-NEXT:        },
+// CHECK-NEXT:        "inner": [
+// CHECK-NEXT:         {
+// CHECK-NEXT:          "id": "0x{{.*}}",
+// CHECK-NEXT:          "kind": "VarDecl",
+// CHECK-NEXT:          "loc": {
+// CHECK-NEXT:           "offset": 108,
+// CHECK-NEXT:           "col": 7,
+// CHECK-NEXT:           "tokLen": 1
+// CHECK-NEXT:          },
+// CHECK-NEXT:          "range": {
+// CHECK-NEXT:           "begin": {
+// CHECK-NEXT:            "offset": 104,
+// CHECK-NEXT:            "col": 3,
+// CHECK-NEXT:            "tokLen": 3
+// CHECK-NEXT:           },
+// CHECK-NEXT:           "end": {
+// CHECK-NEXT:            "offset": 108,
+// CHECK-NEXT:            "col": 7,
+// CHECK-NEXT:            "tokLen": 1
+// CHECK-NEXT:           }
+// CHECK-NEXT:          },
+// CHECK-NEXT:          "isUsed": true,
+// CHECK-NEXT:          "name": "a",
+// CHECK-NEXT:          "type": {
+// CHECK-NEXT:           "qualType": "int"
+// CHECK-NEXT:          }
+// CHECK-NEXT:         }
+// CHECK-NEXT:        ]
+// CHECK-NEXT:       },
+// CHECK-NEXT:       {
+// CHECK-NEXT:        "id": "0x{{.*}}",
+// CHECK-NEXT:        "kind": "DeclStmt",
+// CHECK-NEXT:        "range": {
+// CHECK-NEXT:         "begin": {
+// CHECK-NEXT:          "offset": 113,
+// CHECK-NEXT:          "line": 5,
+// CHECK-NEXT:          "col": 3,
+// CHECK-NEXT:          "tokLen": 4
+// CHECK-NEXT:         },
+// CHECK-NEXT:         "end": {
+// CHECK-NEXT:          "offset": 119,
+// CHECK-NEXT:          "col": 9,
+// CHECK-NEXT:          "tokLen": 1
+// CHECK-NEXT:         }
+// CHECK-NEXT:        },
+// CHECK-NEXT:        "inner": [
+// CHECK-NEXT:         {
+// CHECK-NEXT:          "id": "0x{{.*}}",
+// CHECK-NEXT:          "kind": "VarDecl",
+// CHECK-NEXT:          "loc": {
+// CHECK-NEXT:           "offset": 118,
+// CHECK-NEXT:           "col": 8,
+// CHECK-NEXT:           "tokLen": 1
+// CHECK-NEXT:          },
+// CHECK-NEXT:          "range": {
+// CHECK-NEXT:           "begin": {
+// CHECK-NEXT:            "offset": 113,
+// CHECK-NEXT:            "col": 3,
+// CHECK-NEXT:            "tokLen": 4
+// CHECK-NEXT:           },
+// CHECK-NEXT:           "end": {
+// CHECK-NEXT:            "offset": 118,
+// CHECK-NEXT:            "col": 8,
+// CHECK-NEXT:            "tokLen": 1
+// CHECK-NEXT:           }
+// CHECK-NEXT:          },
+// CHECK-NEXT:          "isUsed": true,
+// CHECK-NEXT:          "name": "b",
+// CHECK-NEXT:          "type": {
+// CHECK-NEXT:           "qualType": "bool"
+// CHECK-NEXT:          }
+// CHECK-NEXT:         }
+// CHECK-NEXT:        ]
+// CHECK-NEXT:       },
+// CHECK-NEXT:       {
+// CHECK-NEXT:        "id": "0x{{.*}}",
+// CHECK-NEXT:        "kind": "DeclStmt",
+// CHECK-NEXT:        "range": {
+// CHECK-NEXT:         "begin": {
+// CHECK-NEXT:          "offset": 123,
+// CHECK-NEXT:          "line": 6,
+// CHECK-NEXT:          "col": 3,
+// CHECK-NEXT:          "tokLen": 4
+// CHECK-NEXT:         },
+// CHECK-NEXT:         "end": {
+// CHECK-NEXT:          "offset": 129,
+// CHECK-NEXT:          "col": 9,
+// CHECK-NEXT:          "tokLen": 1
+// CHECK-NEXT:         }
+// CHECK-NEXT:        },
+// CHECK-NEXT:        "inner": [
+// CHECK-NEXT:         {
+// CHECK-NEXT:          "id": "0x{{.*}}",
+// CHECK-NEXT:          "kind": "VarDecl",
+// CHECK-NEXT:          "loc": {
+// CHECK-NEXT:           "offset": 128,
+// CHECK-NEXT:           "col": 8,
+// CHECK-NEXT:           "tokLen": 1
+// CHECK-NEXT:          },
+// CHECK-NEXT:          "range": {
+// CHECK-NEXT:           "begin": {
+// CHECK-NEXT:            "offset": 123,
+// CHECK-NEXT:            "col": 3,
+// CHECK-NEXT:            "tokLen": 4
+// CHECK-NEXT:           },
+// CHECK-NEXT:           "end": {
+// CHECK-NEXT:            "offset": 128,
+// CHECK-NEXT:            "col": 8,
+// CHECK-NEXT:            "tokLen": 1
+// CHECK-NEXT:           }
+// CHECK-NEXT:          },
+// CHECK-NEXT:          "isUsed": true,
+// CHECK-NEXT:          "name": "c",
+// CHECK-NEXT:          "type": {
+// CHECK-NEXT:           "qualType": "char"
+// CHECK-NEXT:          }
+// CHECK-NEXT:         }
+// CHECK-NEXT:        ]
+// CHECK-NEXT:       },
+// CHECK-NEXT:       {
+// CHECK-NEXT:        "id": "0x{{.*}}",
+// CHECK-NEXT:        "kind": "DeclStmt",
+// CHECK-NEXT:        "range": {
+// CHECK-NEXT:         "begin": {
+// CHECK-NEXT:          "offset": 133,
+// CHECK-NEXT:          "line": 7,
+// CHECK-NEXT:          "col": 3,
+// CHECK-NEXT:          "tokLen": 6
+// CHECK-NEXT:         },
+// CHECK-NEXT:         "end": {
+// CHECK-NEXT:          "offset": 141,
+// CHECK-NEXT:          "col": 11,
+// CHECK-NEXT:          "tokLen": 1
+// CHECK-NEXT:         }
+// CHECK-NEXT:        },
+// CHECK-NEXT:        "inner": [
+// CHECK-NEXT:         {
+// CHECK-NEXT:          "id": "0x{{.*}}",
+// CHECK-NEXT:          "kind": "VarDecl",
+// CHECK-NEXT:          "loc": {
+// CHECK-NEXT:           "offset": 140,
+// CHECK-NEXT:           "col": 10,
+// CHECK-NEXT:           "tokLen": 1
+// CHECK-NEXT:          },
+// CHECK-NEXT:          "range": {
+// CHECK-NEXT:           "begin": {
+// CHECK-NEXT:            "offset": 133,
+// CHECK-NEXT:            "col": 3,
+// CHECK-NEXT:            "tokLen": 6
+// CHECK-NEXT:           },
+// CHECK-NEXT:           "end": {
+// CHECK-NEXT:            "offset": 140,
+// CHECK-NEXT:            "col": 10,
+// CHECK-NEXT:            "tokLen": 1
+// CHECK-NEXT:           }
+// CHECK-NEXT:          },
+// CHECK-NEXT:          "isUsed": true,
+// CHECK-NEXT:          "name": "d",
+// CHECK-NEXT:          "type": {
+// CHECK-NEXT:           "qualType": "double"
+// CHECK-NEXT:          }
+// CHECK-NEXT:         }
+// CHECK-NEXT:        ]
+// CHECK-NEXT:       },
+// CHECK-NEXT:       {
+// CHECK-NEXT:        "id": "0x{{.*}}",
+// CHECK-NEXT:        "kind": "LambdaExpr",
+// CHECK-NEXT:        "range": {
+// CHECK-NEXT:         "begin": {
+// CHECK-NEXT:          "offset": 145,
+// CHECK-NEXT:          "line": 8,
+// CHECK-NEXT:          "col": 3,
+// CHECK-NEXT:          "tokLen": 1
+// CHECK-NEXT:         },
+// CHECK-NEXT:         "end": {
+// CHECK-NEXT:          "offset": 151,
+// CHECK-NEXT:          "col": 9,
+// CHECK-NEXT:          "tokLen": 1
+// CHECK-NEXT:         }
+// CHECK-NEXT:        },
+// CHECK-NEXT:        "type": {
+// CHECK-NEXT:         "qualType": "(lambda at {{.*}}:8:3)"
+// CHECK-NEXT:        },
+// CHECK-NEXT:        "valueCategory": "prvalue",
+// CHECK-NEXT:        "hasExplicitParameters": true,
+// CHECK-NEXT:        "inner": [
+// CHECK-NEXT:         {
+// CHECK-NEXT:          "id": "0x{{.*}}",
+// CHECK-NEXT:          "kind": "CXXRecordDecl",
+// CHECK-NEXT:          "loc": {
+// CHECK-NEXT:           "offset": 145,
+// CHECK-NEXT:           "col": 3,
+// CHECK-NEXT:           "tokLen": 1
+// CHECK-NEXT:          },
+// CHECK-NEXT:          "range": {
+// CHECK-NEXT:           "begin": {
+// CHECK-NEXT:            "offset": 145,
+// CHECK-NEXT:            "col": 3,
+// CHECK-NEXT:            "tokLen": 1
+// CHECK-NEXT:           },
+// CHECK-NEXT:           "end": {
+// CHECK-NEXT:            "offset": 145,
+// CHECK-NEXT:            "col": 3,
+// CHECK-NEXT:            "tokLen": 1
+// CHECK-NEXT:           }
+// CHECK-NEXT:          },
+// CHECK-NEXT:          "isImplicit": true,
+// CHECK-NEXT:          "tagUsed": "class",
+// CHECK-NEXT:          "completeDefinition": true,
+// CHECK-NEXT:          "definitionData": {
+// CHECK-NEXT:           "canConstDefaultInit": true,
+// CHECK-NEXT:           "canPassInRegisters": true,
+// CHECK-NEXT:           "copyAssign": {
+// CHECK-NEXT:            "hasConstParam": true,
+// CHECK-NEXT:            "implicitHasConstParam": true,
+// CHECK-NEXT:            "needsImplicit": true,
+// CHECK-NEXT:            "simple": true,
+// CHECK-NEXT:            "trivial": true
+// CHECK-NEXT:           },
+// CHECK-NEXT:           "copyCtor": {
+// CHECK-NEXT:            "hasConstParam": true,
+// CHECK-NEXT:            "implicitHasConstParam": true,
+// CHECK-NEXT:            "needsImplicit": true,
+// CHECK-NEXT:            "simple": true,
+// CHECK-NEXT:            "trivial": true
+// CHECK-NEXT:           },
+// CHECK-NEXT:           "defaultCtor": {
+// CHECK-NEXT:            "defaultedIsConstexpr": true,
+// CHECK-NEXT:            "exists": true,
+// CHECK-NEXT:            "isConstexpr": true,
+// CHECK-NEXT:            "needsImplicit": true,
+// CHECK-NEXT:            "trivial": true
+// CHECK-NEXT:           },
+// CHECK-NEXT:           "dtor": {
+// CHECK-NEXT:            "irrelevant": true,
+// CHECK-NEXT:            "simple": true,
+// CHECK-NEXT:            "trivial": true
+// CHECK-NEXT:           },
+// CHECK-NEXT:           "hasConstexprNonCopyMoveConstructor": true,
+// CHECK-NEXT:           "isEmpty": true,
+// CHECK-NEXT:           "isLambda": true,
+// CHECK-NEXT:           "isLiteral": true,
+// CHECK-NEXT:           "isStandardLayout": true,
+// CHECK-NEXT:           "isTrivial": true,
+// CHECK-NEXT:           "isTriviallyCopyable": true,
+// CHECK-NEXT:           "moveAssign": {
+// CHECK-NEXT:            "exists": true,
+// CHECK-NEXT:            "needsImplicit": true,
+// CHECK-NEXT:            "simple": true,
+// CHECK-NEXT:            "trivial": true
+// CHECK-NEXT:           },
+// CHECK-NEXT:           "moveCtor": {
+// CHECK-NEXT:            "exists": true,
+// CHECK-NEXT:            "needsImplicit": true,
+// CHECK-NEXT:            "simple": true,
+// CHECK-NEXT:            "trivial": true
+// CHECK-NEXT:           }
+// CHECK-NEXT:          },
+// CHECK-NEXT:          "inner": [
+// CHECK-NEXT:           {
+// CHECK-NEXT:            "id": "0x{{.*}}",
+// CHECK-NEXT:            "kind": "CXXMethodDecl",
+// CHECK-NEXT:            "loc": {
+// CHECK-NEXT:             "offset": 145,
+// CHECK-NEXT:             "col": 3,
+// CHECK-NEXT:             "tokLen": 1
+// CHECK-NEXT:            },
+// CHECK-NEXT:            "range": {
+// CHECK-NEXT:             "begin": {
+// CHECK-NEXT:              "offset": 148,
+// CHECK-NEXT:              "col": 6,
+// CHECK-NEXT:              "tokLen": 1
+// CHECK-NEXT:             },
+// CHECK-NEXT:             "end": {
+// CHECK-NEXT:              "offset": 151,
+// CHECK-NEXT:              "col": 9,
+// CHECK-NEXT:              "tokLen": 1
+// CHECK-NEXT:             }
+// CHECK-NEXT:            },
+// CHECK-NEXT:            "name": "operator()",
+// CHECK-NEXT:            "mangledName": "_ZZ4TestvENK3$_0clEv",
+// CHECK-NEXT:            "type": {
+// CHECK-NEXT:             "qualType": "void () const"
+// CHECK-NEXT:            },
+// CHECK-NEXT:            "inline": true,
+// CHECK-NEXT:            "constexpr": true,
+// CHECK-NEXT:            "inner": [
+// CHECK-NEXT:             {
+// CHECK-NEXT:              "id": "0x{{.*}}",
+// CHECK-NEXT:              "kind": "CompoundStmt",
+// CHECK-NEXT:              "range": {
+// CHECK-NEXT:               "begin": {
+// CHECK-NEXT:                "offset": 150,
+// CHECK-NEXT:                "col": 8,
+// CHECK-NEXT:                "tokLen": 1
+// CHECK-NEXT:               },
+// CHECK-NEXT:               "end": {
+// CHECK-NEXT:                "offset": 151,
+// CHECK-NEXT:                "col": 9,
+// CHECK-NEXT:                "tokLen": 1
+// CHECK-NEXT:               }
+// CHECK-NEXT:              }
+// CHECK-NEXT:             }
+// CHECK-NEXT:            ]
+// CHECK-NEXT:           },
+// CHECK-NEXT:           {
+// CHECK-NEXT:            "id": "0x{{.*}}",
+// CHECK-NEXT:            "kind": "CXXConversionDecl",
+// CHECK-NEXT:            "loc": {
+// CHECK-NEXT:             "offset": 145,
+// CHECK-NEXT:             "col": 3,
+// CHECK-NEXT:             "tokLen": 1
+// CHECK-NEXT:            },
+// CHECK-NEXT:            "range": {
+// CHECK-NEXT:             "begin": {
+// CHECK-NEXT:              "offset": 145,
+// CHECK-NEXT:              "col": 3,
+// CHECK-NEXT:              "tokLen": 1
+// CHECK-NEXT:             },
+// CHECK-NEXT:             "end": {
+// CHECK-NEXT:              "offset": 151,
+// CHECK-NEXT:              "col": 9,
+// CHECK-NEXT:              "tokLen": 1
+// CHECK-NEXT:             }
+// CHECK-NEXT:            },
+// CHECK-NEXT:            "isImplicit": true,
+// CHECK-NEXT:            "name": "operator void (*)()",
+// CHECK-NEXT:            "mangledName": "_ZZ4TestvENK3$_0cvPFvvEEv",
+// CHECK-NEXT:            "type": {
+// CHECK-NEXT:             "qualType": "void (*() const noexcept)()"
+// CHECK-NEXT:            },
+// CHECK-NEXT:            "inline": true,
+// CHECK-NEXT:            "constexpr": true
+// CHECK-NEXT:           },
+// CHECK-NEXT:           {
+// CHECK-NEXT:            "id": "0x{{.*}}",
+// CHECK-NEXT:            "kind": "CXXMethodDecl",
+// CHECK-NEXT:            "loc": {
+// CHECK-NEXT:             "offset": 145,
+// CHECK-NEXT:             "col": 3,
+// CHECK-NEXT:             "tokLen": 1
+// CHECK-NEXT:            },
+// CHECK-NEXT:            "range": {
+// CHECK-NEXT:             "begin": {
+// CHECK-NEXT:              "offset": 145,
+// CHECK-NEXT:              "col": 3,
+// CHECK-NEXT:              "tokLen": 1
+// CHECK-NEXT:             },
+// CHECK-NEXT:             "end": {
+// CHECK-NEXT:              "offset": 151,
+// CHECK-NEXT:              "col": 9,
+// CHECK-NEXT:              "tokLen": 1
+// CHECK-NEXT:             }
+// CHECK-NEXT:            },
+// CHECK-NEXT:            "isImplicit": true,
+// CHECK-NEXT:            "name": "__invoke",
+// CHECK-NEXT:            "mangledName": "_ZZ4TestvEN3$_08__invokeEv",
+// CHECK-NEXT:            "type": {
+// CHECK-NEXT:             "qualType": "void ()"
+// CHECK-NEXT:            },
+// CHECK-NEXT:            "storageClass": "static",
+// CHECK-NEXT:            "inline": true
+// CHECK-NEXT:           },
+// CHECK-NEXT:           {
+// CHECK-NEXT:            "id": "0x{{.*}}",
+// CHECK-NEXT:            "kind": "CXXDestructorDecl",
+// CHECK-NEXT:            "loc": {
+// CHECK-NEXT:             "offset": 145,
+// CHECK-NEXT:             "col": 3,
+// CHECK-NEXT:             "tokLen": 1
+// CHECK-NEXT:            },
+// CHECK-NEXT:            "range": {
+// CHECK-NEXT:             "begin": {
+// CHECK-NEXT:              "offset": 145,
+// CHECK-NEXT:              "col": 3,
+// CHECK-NEXT:              "tokLen": 1
+// CHECK-NEXT:             },
+// CHECK-NEXT:             "end": {
+// CHECK-NEXT:              "offset": 145,
+// CHECK-NEXT:              "col": 3,
+// CHECK-NEXT:              "tokLen": 1
+// CHECK-NEXT:             }
+// CHECK-NEXT:            },
+// CHECK-NEXT:            "isImplicit": true,
+// CHECK-NEXT:            "isReferenced": true,
+// CHECK-NEXT:            "name": "~(lambda at {{.*}}:8:3)",
+// CHECK-NEXT:            "mangledName": "_ZZ4TestvEN3$_0D1Ev",
+// CHECK-NEXT:            "type": {
+// CHECK-NEXT:             "qualType": "void () noexcept"
+// CHECK-NEXT:            },
+// CHECK-NEXT:            "inline": true,
+// CHECK-NEXT:            "constexpr": true,
+// CHECK-NEXT:            "explicitlyDefaulted": "default"
+// CHECK-NEXT:           }
+// CHECK-NEXT:          ]
+// CHECK-NEXT:         },
+// CHECK-NEXT:         {
+// CHECK-NEXT:          "id": "0x{{.*}}",
+// CHECK-NEXT:          "kind": "CompoundStmt",
+// CHECK-NEXT:          "range": {
+// CHECK-NEXT:           "begin": {
+// CHECK-NEXT:            "offset": 150,
+// CHECK-NEXT:            "col": 8,
+// CHECK-NEXT:            "tokLen": 1
+// CHECK-NEXT:           },
+// CHECK-NEXT:           "end": {
+// CHECK-NEXT:            "offset": 151,
+// CHECK-NEXT:            "col": 9,
+// CHECK-NEXT:            "tokLen": 1
+// CHECK-NEXT:           }
+// CHECK-NEXT:          }
+// CHECK-NEXT:         }
+// CHECK-NEXT:        ]
+// CHECK-NEXT:       },
+// CHECK-NEXT:       {
+// CHECK-NEXT:        "id": "0x{{.*}}",
+// CHECK-NEXT:        "kind": "LambdaExpr",
+// CHECK-NEXT:        "range": {
+// CHECK-NEXT:         "begin": {
+// CHECK-NEXT:          "offset": 156,
+// CHECK-NEXT:          "line": 9,
+// CHECK-NEXT:          "col": 3,
+// CHECK-NEXT:          "tokLen": 1
+// CHECK-NEXT:         },
+// CHECK-NEXT:         "end": {
+// CHECK-NEXT:          "offset": 160,
+// CHECK-NEXT:          "col": 7,
+// CHECK-NEXT:          "tokLen": 1
+// CHECK-NEXT:         }
+// CHECK-NEXT:        },
+// CHECK-NEXT:        "type": {
+// CHECK-NEXT:         "qualType": "(lambda at {{.*}}:9:3)"
+// CHECK-NEXT:        },
+// CHECK-NEXT:        "valueCategory": "prvalue",
+// CHECK-NEXT:        "hasExplicitParameters": false,
+// CHECK-NEXT:        "inner": [
+// CHECK-NEXT:         {
+// CHECK-NEXT:          "id": "0x{{.*}}",
+// CHECK-NEXT:          "kind": "CXXRecordDecl",
+// CHECK-NEXT:          "loc": {
+// CHECK-NEXT:           "offset": 156,
+// CHECK-NEXT:           "col": 3,
+// CHECK-NEXT:           "tokLen": 1
+// CHECK-NEXT:          },
+// CHECK-NEXT:          "range": {
+// CHECK-NEXT:           "begin": {
+// CHECK-NEXT:            "offset": 156,
+// CHECK-NEXT:            "col": 3,
+// CHECK-NEXT:            "tokLen": 1
+// CHECK-NEXT:           },
+// CHECK-NEXT:           "end": {
+// CHECK-NEXT:            "offset": 156,
+// CHECK-NEXT:            "col": 3,
+// CHECK-NEXT:            "tokLen": 1
+// CHECK-NEXT:           }
+// CHECK-NEXT:          },
+// CHECK-NEXT:          "isImplicit": true,
+// CHECK-NEXT:          "tagUsed": "class",
+// CHECK-NEXT:          "completeDefinition": true,
+// CHECK-NEXT:          "definitionData": {
+// CHECK-NEXT:           "canConstDefaultInit": true,
+// CHECK-NEXT:           "canPassInRegisters": true,
+// CHECK-NEXT:           "copyAssign": {
+// CHECK-NEXT:            "hasConstParam": true,
+// CHECK-NEXT:            "implicitHasConstParam": true,
+// CHECK-NEXT:            "needsImplicit": true,
+// CHECK-NEXT:            "simple": true,
+// CHECK-NEXT:            "trivial": true
+// CHECK-NEXT:           },
+// CHECK-NEXT:           "copyCtor": {
+// CHECK-NEXT:            "hasConstParam": true,
+// CHECK-NEXT:            "implicitHasConstParam": true,
+// CHECK-NEXT:            "needsImplicit": true,
+// CHECK-NEXT:            "simple": true,
+// CHECK-NEXT:            "trivial": true
+// CHECK-NEXT:           },
+// CHECK-NEXT:           "defaultCtor": {
+// CHECK-NEXT:            "defaultedIsConstexpr": true,
+// CHECK-NEXT:            "exists": true,
+// CHECK-NEXT:            "isConstexpr": true,
+// CHECK-NEXT:            "needsImplicit": true,
+// CHECK-NEXT:            "trivial": true
+// CHECK-NEXT:           },
+// CHECK-NEXT:           "dtor": {
+// CHECK-NEXT:            "irrelevant": true,
+// CHECK-NEXT:            "simple": true,
+// CHECK-NEXT:            "trivial": true
+// CHECK-NEXT:           },
+// CHECK-NEXT:           "hasConstexprNonCopyMoveConstructor": true,
+// CHECK-NEXT:           "isEmpty": true,
+// CHECK-NEXT:           "isLambda": true,
+// CHECK-NEXT:           "isLiteral": true,
+// CHECK-NEXT:           "isStandardLayout": true,
+// CHECK-NEXT:           "isTrivial": true,
+// CHECK-NEXT:           "isTriviallyCopyable": true,
+// CHECK-NEXT:           "moveAssign": {
+// CHECK-NEXT:            "exists": true,
+// CHECK-NEXT:            "needsImplicit": true,
+// CHECK-NEXT:            "simple": true,
+// CHECK-NEXT:            "trivial": true
+// CHECK-NEXT:           },
+// CHECK-NEXT:           "moveCtor": {
+// CHECK-NEXT:            "exists": true,
+// CHECK-NEXT:            "needsImplicit": true,
+// CHECK-NEXT:            "simple": true,
+// CHECK-NEXT:            "trivial": true
+// CHECK-NEXT:           }
+// CHECK-NEXT:          },
+// CHECK-NEXT:          "inner": [
+// CHECK-NEXT:           {
+// CHECK-NEXT:            "id": "0x{{.*}}",
+// CHECK-NEXT:            "kind": "CXXMethodDecl",
+// CHECK-NEXT:            "loc": {
+// CHECK-NEXT:             "offset": 156,
+// CHECK-NEXT:             "col": 3,
+// CHECK-NEXT:             "tokLen": 1
+// CHECK-NEXT:            },
+// CHECK-NEXT:            "range": {
+// CHECK-NEXT:             "begin": {
+// CHECK-NEXT:              "offset": 157,
+// CHECK-NEXT:              "col": 4,
+// CHECK-NEXT:              "tokLen": 1
+// CHECK-NEXT:             },
+// CHECK-NEXT:             "end": {
+// CHECK-NEXT:              "offset": 160,
+// CHECK-NEXT:              "col": 7,
+// CHECK-NEXT:              "tokLen": 1
+// CHECK-NEXT:             }
+// CHECK-NEXT:            },
+// CHECK-NEXT:            "name": "operator()",
+// CHECK-NEXT:            "mangledName": "_ZZ4TestvENK3$_1clEv",
+// CHECK-NEXT:            "type": {
+// CHECK-NEXT:             "qualType": "auto () const -> void"
+// CHECK-NEXT:            },
+// CHECK-NEXT:            "inline": true,
+// CHECK-NEXT:            "constexpr": true,
+// CHECK-NEXT:            "inner": [
+// CHECK-NEXT:             {
+// CHECK-NEXT:              "id": "0x{{.*}}",
+// CHECK-NEXT:              "kind": "CompoundStmt",
+// CHECK-NEXT:              "range": {
+// CHECK-NEXT:               "begin": {
+// CHECK-NEXT:                "offset": 159,
+// CHECK-NEXT:                "col": 6,
+// CHECK-NEXT:                "tokLen": 1
+// CHECK-NEXT:               },
+// CHECK-NEXT:               "end": {
+// CHECK-NEXT:                "offset": 160,
+// CHECK-NEXT:                "col": 7,
+// CHECK-NEXT:                "tokLen": 1
+// CHECK-NEXT:               }
+// CHECK-NEXT:              }
+// CHECK-NEXT:             }
+// CHECK-NEXT:            ]
+// CHECK-NEXT:           },
+// CHECK-NEXT:           {
+// CHECK-NEXT:            "id": "0x{{.*}}",
+// CHECK-NEXT:            "kind": "CXXConversionDecl",
+// CHECK-NEXT:            "loc": {
+// CHECK-NEXT:             "offset": 156,
+// CHECK-NEXT:             "col": 3,
+// CHECK-NEXT:             "tokLen": 1
+// CHECK-NEXT:            },
+// CHECK-NEXT:            "range": {
+// CHECK-NEXT:             "begin": {
+// CHECK-NEXT:              "offset": 156,
+// CHECK-NEXT:              "col": 3,
+// CHECK-NEXT:              "tokLen": 1
+// CHECK-NEXT:             },
+// CHECK-NEXT:             "end": {
+// CHECK-NEXT:              "offset": 160,
+// CHECK-NEXT:              "col": 7,
+// CHECK-NEXT:              "tokLen": 1
+// CHECK-NEXT:             }
+// CHECK-NEXT:            },
+// CHECK-NEXT:            "isImplicit": true,
+// CHECK-NEXT:            "name": "operator void (*)()",
+// CHECK-NEXT:            "mangledName": "_ZZ4TestvENK3$_1cvPFvvEEv",
+// CHECK-NEXT:            "type": {
+// CHECK-NEXT:             "qualType": "auto (*() const noexcept)() -> void"
+// CHECK-NEXT:            },
+// CHECK-NEXT:            "inline": true,
+// CHECK-NEXT:            "constexpr": true
+// CHECK-NEXT:           },
+// CHECK-NEXT:           {
+// CHECK-NEXT:            "id": "0x{{.*}}",
+// CHECK-NEXT:            "kind": "CXXMethodDecl",
+// CHECK-NEXT:            "loc": {
+// CHECK-NEXT:             "offset": 156,
+// CHECK-NEXT:             "col": 3,
+// CHECK-NEXT:             "tokLen": 1
+// CHECK-NEXT:            },
+// CHECK-NEXT:            "range": {
+// CHECK-NEXT:             "begin": {
+// CHECK-NEXT:              "offset": 156,
+// CHECK-NEXT:              "col": 3,
+// CHECK-NEXT:              "tokLen": 1
+// CHECK-NEXT:             },
+// CHECK-NEXT:             "end": {
+// CHECK-NEXT:              "offset": 160,
+// CHECK-NEXT:              "col": 7,
+// CHECK-NEXT:              "tokLen": 1
+// CHECK-NEXT:             }
+// CHECK-NEXT:            },
+// CHECK-NEXT:            "isImplicit": true,
+// CHECK-NEXT:            "name": "__invoke",
+// CHECK-NEXT:            "mangledName": "_ZZ4TestvEN3$_18__invokeEv",
+// CHECK-NEXT:            "type": {
+// CHECK-NEXT:             "qualType": "auto () -> void"
+// CHECK-NEXT:            },
+// CHECK-NEXT:            "storageClass": "static",
+// CHECK-NEXT:            "inline": true
+// CHECK-NEXT:           },
+// CHECK-NEXT:           {
+// CHECK-NEXT:            "id": "0x{{.*}}",
+// CHECK-NEXT:            "kind": "CXXDestructorDecl",
+// CHECK-NEXT:            "loc": {
+// CHECK-NEXT:             "offset": 156,
+// CHECK-NEXT:             "col": 3,
+// CHECK-NEXT:             "tokLen": 1
+// CHECK-NEXT:            },
+// CHECK-NEXT:            "range": {
+// CHECK-NEXT:             "begin": {
+// CHECK-NEXT:              "offset": 156,
+// CHECK-NEXT:              "col": 3,
+// CHECK-NEXT:              "tokLen": 1
+// CHECK-NEXT:             },
+// CHECK-NEXT:             "end": {
+// CHECK-NEXT:              "offset": 156,
+// CHECK-NEXT:              "col": 3,
+// CHECK-NEXT:              "tokLen": 1
+// CHECK-NEXT:             }
+// CHECK-NEXT:            },
+// CHECK-NEXT:            "isImplicit": true,
+// CHECK-NEXT:            "isReferenced": true,
+// CHECK-NEXT:            "name": "~(lambda at {{.*}}:9:3)",
+// CHECK-NEXT:            "mangledName": "_ZZ4TestvEN3$_1D1Ev",
+// CHECK-NEXT:            "type": {
+// CHECK-NEXT:             "qualType": "void () noexcept"
+// CHECK-NEXT:            },
+// CHECK-NEXT:            "inline": true,
+// CHECK-NEXT:            "constexpr": true,
+// CHECK-NEXT:            "explicitlyDefaulted": "default"
+// CHECK-NEXT:           }
+// CHECK-NEXT:          ]
+// CHECK-NEXT:         },
+// CHECK-NEXT:         {
+// CHECK-NEXT:          "id": "0x{{.*}}",
+// CHECK-NEXT:          "kind": "CompoundStmt",
+// CHECK-NEXT:          "range": {
+// CHECK-NEXT:           "begin": {
+// CHECK-NEXT:            "offset": 159,
+// CHECK-NEXT:            "col": 6,
+// CHECK-NEXT:            "tokLen": 1
+// CHECK-NEXT:           },
+// CHECK-NEXT:           "end": {
+// CHECK-NEXT:            "offset": 160,
+// CHECK-NEXT:            "col": 7,
+// CHECK-NEXT:            "tokLen": 1
+// CHECK-NEXT:           }
+// CHECK-NEXT:          }
+// CHECK-NEXT:         }
+// CHECK-NEXT:        ]
+// CHECK-NEXT:       },
+// CHECK-NEXT:       {
+// CHECK-NEXT:        "id": "0x{{.*}}",
+// CHECK-NEXT:        "kind": "LambdaExpr",
+// CHECK-NEXT:        "range": {
+// CHECK-NEXT:         "begin": {
+// CHECK-NEXT:          "offset": 165,
+// CHECK-NEXT:          "line": 10,
+// CHECK-NEXT:          "col": 3,
+// CHECK-NEXT:          "tokLen": 1
+// CHECK-NEXT:         },
+// CHECK-NEXT:         "end": {
+// CHECK-NEXT:          "offset": 189,
+// CHECK-NEXT:          "col": 27,
+// CHECK-NEXT:          "tokLen": 1
+// CHECK-NEXT:         }
+// CHECK-NEXT:        },
+// CHECK-NEXT:        "type": {
+// CHECK-NEXT:         "qualType": "(lambda at {{.*}}:10:3)"
+// CHECK-NEXT:        },
+// CHECK-NEXT:        "valueCategory": "prvalue",
+// CHECK-NEXT:        "hasExplicitParameters": true,
+// CHECK-NEXT:        "inner": [
+// CHECK-NEXT:         {
+// CHECK-NEXT:          "id": "0x{{.*}}",
+// CHECK-NEXT:          "kind": "CXXRecordDecl",
+// CHECK-NEXT:          "loc": {
+// CHECK-NEXT:           "offset": 165,
+// CHECK-NEXT:           "col": 3,
+// CHECK-NEXT:           "tokLen": 1
+// CHECK-NEXT:          },
+// CHECK-NEXT:          "range": {
+// CHECK-NEXT:           "begin": {
+// CHECK-NEXT:            "offset": 165,
+// CHECK-NEXT:            "col": 3,
+// CHECK-NEXT:            "tokLen": 1
+// CHECK-NEXT:           },
+// CHECK-NEXT:           "end": {
+// CHECK-NEXT:            "offset": 165,
+// CHECK-NEXT:            "col": 3,
+// CHECK-NEXT:            "tokLen": 1
+// CHECK-NEXT:           }
+// CHECK-NEXT:          },
+// CHECK-NEXT:          "isImplicit": true,
+// CHECK-NEXT:          "tagUsed": "class",
+// CHECK-NEXT:          "completeDefinition": true,
+// CHECK-NEXT:          "definitionData": {
+// CHECK-NEXT:           "canConstDefaultInit": true,
+// CHECK-NEXT:           "canPassInRegisters": true,
+// CHECK-NEXT:           "copyAssign": {
+// CHECK-NEXT:            "hasConstParam": true,
+// CHECK-NEXT:            "implicitHasConstParam": true,
+// CHECK-NEXT:            "needsImplicit": true,
+// CHECK-NEXT:            "simple": true,
+// CHECK-NEXT:            "trivial": true
+// CHECK-NEXT:           },
+// CHECK-NEXT:           "copyCtor": {
+// CHECK-NEXT:            "hasConstParam": true,
+// CHECK-NEXT:            "implicitHasConstParam": true,
+// CHECK-NEXT:            "needsImplicit": true,
+// CHECK-NEXT:            "simple": true,
+// CHECK-NEXT:            "trivial": true
+// CHECK-NEXT:           },
+// CHECK-NEXT:           "defaultCtor": {
+// CHECK-NEXT:            "defaultedIsConstexpr": true,
+// CHECK-NEXT:            "exists": true,
+// CHECK-NEXT:            "isConstexpr": true,
+// CHECK-NEXT:            "needsImplicit": true,
+// CHECK-NEXT:            "trivial": true
+// CHECK-NEXT:           },
+// CHECK-NEXT:           "dtor": {
+// CHECK-NEXT:            "irrelevant": true,
+// CHECK-NEXT:            "simple": true,
+// CHECK-NEXT:            "trivial": true
+// CHECK-NEXT:           },
+// CHECK-NEXT:           "hasConstexprNonCopyMoveConstructor": true,
+// CHECK-NEXT:           "isEmpty": true,
+// CHECK-NEXT:           "isLambda": true,
+// CHECK-NEXT:           "isLiteral": true,
+// CHECK-NEXT:           "isStandardLayout": true,
+// CHECK-NEXT:           "isTrivial": true,
+// CHECK-NEXT:           "isTriviallyCopyable": true,
+// CHECK-NEXT:           "moveAssign": {
+// CHECK-NEXT:            "exists": true,
+// CHECK-NEXT:            "needsImplicit": true,
+// CHECK-NEXT:            "simple": true,
+// CHECK-NEXT:            "trivial": true
+// CHECK-NEXT:           },
+// CHECK-NEXT:           "moveCtor": {
+// CHECK-NEXT:            "exists": true,
+// CHECK-NEXT:            "needsImplicit": true,
+// CHECK-NEXT:            "simple": true,
+// CHECK-NEXT:            "trivial": true
+// CHECK-NEXT:           }
+// CHECK-NEXT:          },
+// CHECK-NEXT:          "inner": [
+// CHECK-NEXT:           {
+// CHECK-NEXT:            "id": "0x{{.*}}",
+// CHECK-NEXT:            "kind": "CXXMethodDecl",
+// CHECK-NEXT:            "loc": {
+// CHECK-NEXT:             "offset": 165,
+// CHECK-NEXT:             "col": 3,
+// CHECK-NEXT:             "tokLen": 1
+// CHECK-NEXT:            },
+// CHECK-NEXT:            "range": {
+// CHECK-NEXT:             "begin": {
+// CHECK-NEXT:              "offset": 173,
+// CHECK-NEXT:              "col": 11,
+// CHECK-NEXT:              "tokLen": 3
+// CHECK-NEXT:             },
+// CHECK-NEXT:             "end": {
+// CHECK-NEXT:              "offset": 189,
+// CHECK-NEXT:              "col": 27,
+// CHECK-NEXT:              "tokLen": 1
+// CHECK-NEXT:             }
+// CHECK-NEXT:            },
+// CHECK-NEXT:            "name": "operator()",
+// CHECK-NEXT:            "mangledName": "_ZZ4TestvENK3$_2clEv",
+// CHECK-NEXT:            "type": {
+// CHECK-NEXT:             "qualType": "auto () const -> int"
+// CHECK-NEXT:            },
+// CHECK-NEXT:            "inline": true,
+// CHECK-NEXT:            "constexpr": true,
+// CHECK-NEXT:            "inner": [
+// CHECK-NEXT:             {
+// CHECK-NEXT:              "id": "0x{{.*}}",
+// CHECK-NEXT:              "kind": "CompoundStmt",
+// CHECK-NEXT:              "range": {
+// CHECK-NEXT:               "begin": {
+// CHECK-NEXT:                "offset": 177,
+// CHECK-NEXT:                "col": 15,
+// CHECK-NEXT:                "tokLen": 1
+// CHECK-NEXT:               },
+// CHECK-NEXT:               "end": {
+// CHECK-NEXT:                "offset": 189,
+// CHECK-NEXT:                "col": 27,
+// CHECK-NEXT:                "tokLen": 1
+// CHECK-NEXT:               }
+// CHECK-NEXT:              },
+// CHECK-NEXT:              "inner": [
+// CHECK-NEXT:               {
+// CHECK-NEXT:                "id": "0x{{.*}}",
+// CHECK-NEXT:                "kind": "ReturnStmt",
+// CHECK-NEXT:                "range": {
+// CHECK-NEXT:                 "begin": {
+// CHECK-NEXT:                  "offset": 179,
+// CHECK-NEXT:                  "col": 17,
+// CHECK-NEXT:                  "tokLen": 6
+// CHECK-NEXT:                 },
+// CHECK-NEXT:                 "end": {
+// CHECK-NEXT:                  "offset": 186,
+// CHECK-NEXT:                  "col": 24,
+// CHECK-NEXT:                  "tokLen": 1
+// CHECK-NEXT:                 }
+// CHECK-NEXT:                },
+// CHECK-NEXT:                "inner": [
+// CHECK-NEXT:                 {
+// CHECK-NEXT:                  "id": "0x{{.*}}",
+// CHECK-NEXT:                  "kind": "IntegerLiteral",
+// CHECK-NEXT:                  "range": {
+// CHECK-NEXT:                   "begin": {
+// CHECK-NEXT:                    "offset": 186,
+// CHECK-NEXT:                    "col": 24,
+// CHECK-NEXT:                    "tokLen": 1
+// CHECK-NEXT:                   },
+// CHECK-NEXT:                   "end": {
+// CHECK-NEXT:                    "offset": 186,
+// CHECK-NEXT:                    "col": 24,
+// CHECK-NEXT:                    "tokLen": 1
+// CHECK-NEXT:                   }
+// CHECK-NEXT:                  },
+// CHECK-NEXT:                  "type": {
+// CHECK-NEXT:                   "qualType": "int"
+// CHECK-NEXT:                  },
+// CHECK-NEXT:                  "valueCategory": "prvalue",
+// CHECK-NEXT:                  "value": "0"
+// CHECK-NEXT:                 }
+// CHECK-NEXT:                ]
+// CHECK-NEXT:               }
+// CHECK-NEXT:              ]
+// CHECK-NEXT:             }
+// CHECK-NEXT:            ]
+// CHECK-NEXT:           },
+// CHECK-NEXT:           {
+// CHECK-NEXT:            "id": "0x{{.*}}",
+// CHECK-NEXT:            "kind": "CXXConversionDecl",
+// CHECK-NEXT:            "loc": {
+// CHECK-NEXT:             "offset": 165,
+// CHECK-NEXT:             "col": 3,
+// CHECK-NEXT:             "tokLen": 1
+// CHECK-NEXT:            },
+// CHECK-NEXT:            "range": {
+// CHECK-NEXT:             "begin": {
+// CHECK-NEXT:              "offset": 165,
+// CHECK-NEXT:              "col": 3,
+// CHECK-NEXT:              "tokLen": 1
+// CHECK-NEXT:             },
+// CHECK-NEXT:             "end": {
+// CHECK-NEXT:              "offset": 189,
+// CHECK-NEXT:              "col": 27,
+// CHECK-NEXT:              "tokLen": 1
+// CHECK-NEXT:             }
+// CHECK-NEXT:            },
+// CHECK-NEXT:            "isImplicit": true,
+// CHECK-NEXT:            "name": "operator int (*)()",
+// CHECK-NEXT:            "mangledName": "_ZZ4TestvENK3$_2cvPFivEEv",
+// CHECK-NEXT:            "type": {
+// CHECK-NEXT:             "qualType": "auto (*() const noexcept)() -> int"
+// CHECK-NEXT:            },
+// CHECK-NEXT:            "inline": true,
+// CHECK-NEXT:            "constexpr": true
+// CHECK-NEXT:           },
+// CHECK-NEXT:           {
+// CHECK-NEXT:            "id": "0x{{.*}}",
+// CHECK-NEXT:            "kind": "CXXMethodDecl",
+// CHECK-NEXT:            "loc": {
+// CHECK-NEXT:             "offset": 165,
+// CHECK-NEXT:             "col": 3,
+// CHECK-NEXT:             "tokLen": 1
+// CHECK-NEXT:            },
+// CHECK-NEXT:            "range": {
+// CHECK-NEXT:             "begin": {
+// CHECK-NEXT:              "offset": 165,
+// CHECK-NEXT:              "col": 3,
+// CHECK-NEXT:              "tokLen": 1
+// CHECK-NEXT:             },
+// CHECK-NEXT:             "end": {
+// CHECK-NEXT:              "offset": 189,
+// CHECK-NEXT:              "col": 27,
+// CHECK-NEXT:              "tokLen": 1
+// CHECK-NEXT:             }
+// CHECK-NEXT:            },
+// CHECK-NEXT:            "isImplicit": true,
+// CHECK-NEXT:            "name": "__invoke",
+// CHECK-NEXT:            "mangledName": "_ZZ4TestvEN3$_28__invokeEv",
+// CHECK-NEXT:            "type": {
+// CHECK-NEXT:             "qualType": "auto () -> int"
+// CHECK-NEXT:            },
+// CHECK-NEXT:            "storageClass": "static",
+// CHECK-NEXT:            "inline": true
+// CHECK-NEXT:           },
+// CHECK-NEXT:           {
+// CHECK-NEXT:            "id": "0x{{.*}}",
+// CHECK-NEXT:            "kind": "CXXDestructorDecl",
+// CHECK-NEXT:            "loc": {
+// CHECK-NEXT:             "offset": 165,
+// CHECK-NEXT:             "col": 3,
+// CHECK-NEXT:             "tokLen": 1
+// CHECK-NEXT:            },
+// CHECK-NEXT:            "range": {
+// CHECK-NEXT:             "begin": {
+// CHECK-NEXT:              "offset": 165,
+// CHECK-NEXT:              "col": 3,
+// CHECK-NEXT:              "tokLen": 1
+// CHECK-NEXT:             },
+// CHECK-NEXT:             "end": {
+// CHECK-NEXT:              "offset": 165,
+// CHECK-NEXT:              "col": 3,
+// CHECK-NEXT:              "tokLen": 1
+// CHECK-NEXT:             }
+// CHECK-NEXT:            },
+// CHECK-NEXT:            "isImplicit": true,
+// CHECK-NEXT:            "isReferenced": true,
+// CHECK-NEXT:            "name": "~(lambda at {{.*}}:10:3)",
+// CHECK-NEXT:            "mangledName": "_ZZ4TestvEN3$_2D1Ev",
+// CHECK-NEXT:            "type": {
+// CHECK-NEXT:             "qualType": "void () noexcept"
+// CHECK-NEXT:            },
+// CHECK-NEXT:            "inline": true,
+// CHECK-NEXT:            "constexpr": true,
+// CHECK-NEXT:            "explicitlyDefaulted": "default"
+// CHECK-NEXT:           }
+// CHECK-NEXT:          ]
+// CHECK-NEXT:         },
+// CHECK-NEXT:         {
+// CHECK-NEXT:          "id": "0x{{.*}}",
+// CHECK-NEXT:          "kind": "CompoundStmt",
+// CHECK-NEXT:          "range": {
+// CHECK-NEXT:           "begin": {
+// CHECK-NEXT:            "offset": 177,
+// CHECK-NEXT:            "col": 15,
+// CHECK-NEXT:            "tokLen": 1
+// CHECK-NEXT:           },
+// CHECK-NEXT:           "end": {
+// CHECK-NEXT:            "offset": 189,
+// CHECK-NEXT:            "col": 27,
+// CHECK-NEXT:            "tokLen": 1
+// CHECK-NEXT:           }
+// CHECK-NEXT:          },
+// CHECK-NEXT:          "inner": [
+// CHECK-NEXT:           {
+// CHECK-NEXT:            "id": "0x{{.*}}",
+// CHECK-NEXT:            "kind": "ReturnStmt",
+// CHECK-NEXT:            "range": {
+// CHECK-NEXT:             "begin": {
+// CHECK-NEXT:              "offset": 179,
+// CHECK-NEXT:              "col": 17,
+// CHECK-NEXT:              "tokLen": 6
+// CHECK-NEXT:             },
+// CHECK-NEXT:             "end": {
+// CHECK-NEXT:              "offset": 186,
+// CHECK-NEXT:              "col": 24,
+// CHECK-NEXT:              "tokLen": 1
+// CHECK-NEXT:             }
+// CHECK-NEXT:            },
+// CHECK-NEXT:            "inner": [
+// CHECK-NEXT:             {
+// CHECK-NEXT:              "id": "0x{{.*}}",
+// CHECK-NEXT:              "kind": "IntegerLiteral",
+// CHECK-NEXT:              "range": {
+// CHECK-NEXT:               "begin": {
+// CHECK-NEXT:                "offset": 186,
+// CHECK-NEXT:                "col": 24,
+// CHECK-NEXT:                "tokLen": 1
+// CHECK-NEXT:               },
+// CHECK-NEXT:               "end": {
+// CHECK-NEXT:                "offset": 186,
+// CHECK-NEXT:                "col": 24,
+// CHECK-NEXT:                "tokLen": 1
+// CHECK-NEXT:               }
+// CHECK-NEXT:              },
+// CHECK-NEXT:              "type": {
+// CHECK-NEXT:               "qualType": "int"
+// CHECK-NEXT:              },
+// CHECK-NEXT:              "valueCategory": "prvalue",
+// CHECK-NEXT:              "value": "0"
+// CHECK-NEXT:             }
+// CHECK-NEXT:            ]
+// CHECK-NEXT:           }
+// CHECK-NEXT:          ]
+// CHECK-NEXT:         }
+// CHECK-NEXT:        ]
+// CHECK-NEXT:       },
+// CHECK-NEXT:       {
+// CHECK-NEXT:        "id": "0x{{.*}}",
+// CHECK-NEXT:        "kind": "LambdaExpr",
+// CHECK-NEXT:        "range": {
+// CHECK-NEXT:         "begin": {
+// CHECK-NEXT:          "offset": 194,
+// CHECK-NEXT:          "line": 11,
+// CHECK-NEXT:          "col": 3,
+// CHECK-NEXT:          "tokLen": 1
+// CHECK-NEXT:         },
+// CHECK-NEXT:         "end": {
+// CHECK-NEXT:          "offset": 216,
+// CHECK-NEXT:          "col": 25,
+// CHECK-NEXT:          "tokLen": 1
+// CHECK-NEXT:         }
+// CHECK-NEXT:        },
+// CHECK-NEXT:        "type": {
+// CHECK-NEXT:         "qualType": "(lambda at {{.*}}:11:3)"
+// CHECK-NEXT:        },
+// CHECK-NEXT:        "valueCategory": "prvalue",
+// CHECK-NEXT:        "hasExplicitParameters": false,
+// CHECK-NEXT:        "inner": [
+// CHECK-NEXT:         {
+// CHECK-NEXT:          "id": "0x{{.*}}",
+// CHECK-NEXT:          "kind": "CXXRecordDecl",
+// CHECK-NEXT:          "loc": {
+// CHECK-NEXT:           "offset": 194,
+// CHECK-NEXT:           "col": 3,
+// CHECK-NEXT:           "tokLen": 1
+// CHECK-NEXT:          },
+// CHECK-NEXT:          "range": {
+// CHECK-NEXT:           "begin": {
+// CHECK-NEXT:            "offset": 194,
+// CHECK-NEXT:            "col": 3,
+// CHECK-NEXT:            "tokLen": 1
+// CHECK-NEXT:           },
+// CHECK-NEXT:           "end": {
+// CHECK-NEXT:            "offset": 194,
+// CHECK-NEXT:            "col": 3,
+// CHECK-NEXT:            "tokLen": 1
+// CHECK-NEXT:           }
+// CHECK-NEXT:          },
+// CHECK-NEXT:          "isImplicit": true,
+// CHECK-NEXT:          "tagUsed": "class",
+// CHECK-NEXT:          "completeDefinition": true,
+// CHECK-NEXT:          "definitionData": {
+// CHECK-NEXT:           "canConstDefaultInit": true,
+// CHECK-NEXT:           "canPassInRegisters": true,
+// CHECK-NEXT:           "copyAssign": {
+// CHECK-NEXT:            "hasConstParam": true,
+// CHECK-NEXT:            "implicitHasConstParam": true,
+// CHECK-NEXT:            "needsImplicit": true,
+// CHECK-NEXT:            "simple": true,
+// CHECK-NEXT:            "trivial": true
+// CHECK-NEXT:           },
+// CHECK-NEXT:           "copyCtor": {
+// CHECK-NEXT:            "hasConstParam": true,
+// CHECK-NEXT:            "implicitHasConstParam": true,
+// CHECK-NEXT:            "needsImplicit": true,
+// CHECK-NEXT:            "simple": true,
+// CHECK-NEXT:            "trivial": true
+// CHECK-NEXT:           },
+// CHECK-NEXT:           "defaultCtor": {
+// CHECK-NEXT:            "defaultedIsConstexpr": true,
+// CHECK-NEXT:            "exists": true,
+// CHECK-NEXT:            "isConstexpr": true,
+// CHECK-NEXT:            "needsImplicit": true,
+// CHECK-NEXT:            "trivial": true
+// CHECK-NEXT:           },
+// CHECK-NEXT:           "dtor": {
+// CHECK-NEXT:            "irrelevant": true,
+// CHECK-NEXT:            "simple": true,
+// CHECK-NEXT:            "trivial": true
+// CHECK-NEXT:           },
+// CHECK-NEXT:           "hasConstexprNonCopyMoveConstructor": true,
+// CHECK-NEXT:           "isEmpty": true,
+// CHECK-NEXT:           "isLambda": true,
+// CHECK-NEXT:           "isLiteral": true,
+// CHECK-NEXT:           "isStandardLayout": true,
+// CHECK-NEXT:           "isTrivial": true,
+// CHECK-NEXT:           "isTriviallyCopyable": true,
+// CHECK-NEXT:           "moveAssign": {
+// CHECK-NEXT:            "exists": true,
+// CHECK-NEXT:            "needsImplicit": true,
+// CHECK-NEXT:            "simple": true,
+// CHECK-NEXT:            "trivial": true
+// CHECK-NEXT:           },
+// CHECK-NEXT:           "moveCtor": {
+// CHECK-NEXT:            "exists": true,
+// CHECK-NEXT:            "needsImplicit": true,
+// CHECK-NEXT:            "simple": true,
+// CHECK-NEXT:            "trivial": true
+// CHECK-NEXT:           }
+// CHECK-NEXT:          },
+// CHECK-NEXT:          "inner": [
+// CHECK-NEXT:           {
+// CHECK-NEXT:            "id": "0x{{.*}}",
+// CHECK-NEXT:            "kind": "CXXMethodDecl",
+// CHECK-NEXT:            "loc": {
+// CHECK-NEXT:             "offset": 194,
+// CHECK-NEXT:             "col": 3,
+// CHECK-NEXT:             "tokLen": 1
+// CHECK-NEXT:            },
+// CHECK-NEXT:            "range": {
+// CHECK-NEXT:             "begin": {
+// CHECK-NEXT:              "offset": 200,
+// CHECK-NEXT:              "col": 9,
+// CHECK-NEXT:              "tokLen": 3
+// CHECK-NEXT:             },
+// CHECK-NEXT:             "end": {
+// CHECK-NEXT:              "offset": 216,
+// CHECK-NEXT:              "col": 25,
+// CHECK-NEXT:              "tokLen": 1
+// CHECK-NEXT:             }
+// CHECK-NEXT:            },
+// CHECK-NEXT:            "name": "operator()",
+// CHECK-NEXT:            "mangledName": "_ZZ4TestvENK3$_3clEv",
+// CHECK-NEXT:            "type": {
+// CHECK-NEXT:             "qualType": "auto () const -> int"
+// CHECK-NEXT:            },
+// CHECK-NEXT:            "inline": true,
+// CHECK-NEXT:            "constexpr": true,
+// CHECK-NEXT:            "inner": [
+// CHECK-NEXT:             {
+// CHECK-NEXT:              "id": "0x{{.*}}",
+// CHECK-NEXT:              "kind": "CompoundStmt",
+// CHECK-NEXT:              "range": {
+// CHECK-NEXT:               "begin": {
+// CHECK-NEXT:                "offset": 204,
+// CHECK-NEXT:                "col": 13,
+// CHECK-NEXT:                "tokLen": 1
+// CHECK-NEXT:               },
+// CHECK-NEXT:               "end": {
+// CHECK-NEXT:                "offset": 216,
+// CHECK-NEXT:                "col": 25,
+// CHECK-NEXT:                "tokLen": 1
+// CHECK-NEXT:               }
+// CHECK-NEXT:              },
+// CHECK-NEXT:              "inner": [
+// CHECK-NEXT:               {
+// CHECK-NEXT:                "id": "0x{{.*}}",
+// CHECK-NEXT:                "kind": "ReturnStmt",
+// CHECK-NEXT:                "range": {
+// CHECK-NEXT:                 "begin": {
+// CHECK-NEXT:                  "offset": 206,
+// CHECK-NEXT:                  "col": 15,
+// CHECK-NEXT:                  "tokLen": 6
+// CHECK-NEXT:                 },
+// CHECK-NEXT:                 "end": {
+// CHECK-NEXT:                  "offset": 213,
+// CHECK-NEXT:                  "col": 22,
+// CHECK-NEXT:                  "tokLen": 1
+// CHECK-NEXT:                 }
+// CHECK-NEXT:                },
+// CHECK-NEXT:                "inner": [
+// CHECK-NEXT:                 {
+// CHECK-NEXT:                  "id": "0x{{.*}}",
+// CHECK-NEXT:                  "kind": "IntegerLiteral",
+// CHECK-NEXT:                  "range": {
+// CHECK-NEXT:                   "begin": {
+// CHECK-NEXT:                    "offset": 213,
+// CHECK-NEXT:                    "col": 22,
+// CHECK-NEXT:                    "tokLen": 1
+// CHECK-NEXT:                   },
+// CHECK-NEXT:                   "end": {
+// CHECK-NEXT:                    "offset": 213,
+// CHECK-NEXT:                    "col": 22,
+// CHECK-NEXT:                    "tokLen": 1
+// CHECK-NEXT:                   }
+// CHECK-NEXT:                  },
+// CHECK-NEXT:                  "type": {
+// CHECK-NEXT:                   "qualType": "int"
+// CHECK-NEXT:                  },
+// CHECK-NEXT:                  "valueCategory": "prvalue",
+// CHECK-NEXT:                  "value": "0"
+// CHECK-NEXT:                 }
+// CHECK-NEXT:                ]
+// CHECK-NEXT:               }
+// CHECK-NEXT:              ]
+// CHECK-NEXT:             }
+// CHECK-NEXT:            ]
+// CHECK-NEXT:           },
+// CHECK-NEXT:           {
+// CHECK-NEXT:            "id": "0x{{.*}}",
+// CHECK-NEXT:            "kind": "CXXConversionDecl",
+// CHECK-NEXT:            "loc": {
+// CHECK-NEXT:             "offset": 194,
+// CHECK-NEXT:             "col": 3,
+// CHECK-NEXT:             "tokLen": 1
+// CHECK-NEXT:            },
+// CHECK-NEXT:            "range": {
+// CHECK-NEXT:             "begin": {
+// CHECK-NEXT:              "offset": 194,
+// CHECK-NEXT:              "col": 3,
+// CHECK-NEXT:              "tokLen": 1
+// CHECK-NEXT:             },
+// CHECK-NEXT:             "end": {
+// CHECK-NEXT:              "offset": 216,
+// CHECK-NEXT:              "col": 25,
+// CHECK-NEXT:              "tokLen": 1
+// CHECK-NEXT:             }
+// CHECK-NEXT:            },
+// CHECK-NEXT:            "isImplicit": true,
+// CHECK-NEXT:            "name": "operator int (*)()",
+// CHECK-NEXT:            "mangledName": "_ZZ4TestvENK3$_3cvPFivEEv",
+// CHECK-NEXT:            "type": {
+// CHECK-NEXT:             "qualType": "auto (*() const noexcept)() -> int"
+// CHECK-NEXT:            },
+// CHECK-NEXT:            "inline": true,
+// CHECK-NEXT:            "constexpr": true
+// CHECK-NEXT:           },
+// CHECK-NEXT:           {
+// CHECK-NEXT:            "id": "0x{{.*}}",
+// CHECK-NEXT:            "kind": "CXXMethodDecl",
+// CHECK-NEXT:            "loc": {
+// CHECK-NEXT:             "offset": 194,
+// CHECK-NEXT:             "col": 3,
+// CHECK-NEXT:             "tokLen": 1
+// CHECK-NEXT:            },
+// CHECK-NEXT:            "range": {
+// CHECK-NEXT:             "begin": {
+// CHECK-NEXT:              "offset": 194,
+// CHECK-NEXT:              "col": 3,
+// CHECK-NEXT:              "tokLen": 1
+// CHECK-NEXT:             },
+// CHECK-NEXT:             "end": {
+// CHECK-NEXT:              "offset": 216,
+// CHECK-NEXT:              "col": 25,
+// CHECK-NEXT:              "tokLen": 1
+// CHECK-NEXT:             }
+// CHECK-NEXT:            },
+// CHECK-NEXT:            "isImplicit": true,
+// CHECK-NEXT:            "name": "__invoke",
+// CHECK-NEXT:            "mangledName": "_ZZ4TestvEN3$_38__invokeEv",
+// CHECK-NEXT:            "type": {
+// CHECK-NEXT:             "qualType": "auto () -> int"
+// CHECK-NEXT:            },
+// CHECK-NEXT:            "storageClass": "static",
+// CHECK-NEXT:            "inline": true
+// CHECK-NEXT:           },
+// CHECK-NEXT:           {
+// CHECK-NEXT:            "id": "0x{{.*}}",
+// CHECK-NEXT:            "kind": "CXXDestructorDecl",
+// CHECK-NEXT:            "loc": {
+// CHECK-NEXT:             "offset": 194,
+// CHECK-NEXT:             "col": 3,
+// CHECK-NEXT:             "tokLen": 1
+// CHECK-NEXT:            },
+// CHECK-NEXT:            "range": {
+// CHECK-NEXT:             "begin": {
+// CHECK-NEXT:              "offset": 194,
+// CHECK-NEXT:              "col": 3,
+// CHECK-NEXT:              "tokLen": 1
+// CHECK-NEXT:             },
+// CHECK-NEXT:             "end": {
+// CHECK-NEXT:              "offset": 194,
+// CHECK-NEXT:              "col": 3,
+// CHECK-NEXT:              "tokLen": 1
+// CHECK-NEXT:             }
+// CHECK-NEXT:            },
+// CHECK-NEXT:            "isImplicit": true,
+// CHECK-NEXT:            "isReferenced": true,
+// CHECK-NEXT:            "name": "~(lambda at {{.*}}:11:3)",
+// CHECK-NEXT:            "mangledName": "_ZZ4TestvEN3$_3D1Ev",
+// CHECK-NEXT:            "type": {
+// CHECK-NEXT:             "qualType": "void () noexcept"
+// CHECK-NEXT:            },
+// CHECK-NEXT:            "inline": true,
+// CHECK-NEXT:            "constexpr": true,
+// CHECK-NEXT:            "explicitlyDefaulted": "default"
+// CHECK-NEXT:           }
+// CHECK-NEXT:          ]
+// CHECK-NEXT:         },
+// CHECK-NEXT:         {
+// CHECK-NEXT:          "id": "0x{{.*}}",
+// CHECK-NEXT:          "kind": "CompoundStmt",
+// CHECK-NEXT:          "range": {
+// CHECK-NEXT:           "begin": {
+// CHECK-NEXT:            "offset": 204,
+// CHECK-NEXT:            "col": 13,
+// CHECK-NEXT:            "tokLen": 1
+// CHECK-NEXT:           },
+// CHECK-NEXT:           "end": {
+// CHECK-NEXT:            "offset": 216,
+// CHECK-NEXT:            "col": 25,
+// CHECK-NEXT:            "tokLen": 1
+// CHECK-NEXT:           }
+// CHECK-NEXT:          },
+// CHECK-NEXT:          "inner": [
+// CHECK-NEXT:           {
+// CHECK-NEXT:            "id": "0x{{.*}}",
+// CHECK-NEXT:            "kind": "ReturnStmt",
+// CHECK-NEXT:            "range": {
+// CHECK-NEXT:             "begin": {
+// CHECK-NEXT:              "offset": 206,
+// CHECK-NEXT:              "col": 15,
+// CHECK-NEXT:              "tokLen": 6
+// CHECK-NEXT:             },
+// CHECK-NEXT:             "end": {
+// CHECK-NEXT:              "offset": 213,
+// CHECK-NEXT:              "col": 22,
+// CHECK-NEXT:              "tokLen": 1
+// CHECK-NEXT:             }
+// CHECK-NEXT:            },
+// CHECK-NEXT:            "inner": [
+// CHECK-NEXT:             {
+// CHECK-NEXT:              "id": "0x{{.*}}",
+// CHECK-NEXT:              "kind": "IntegerLiteral",
+// CHECK-NEXT:              "range": {
+// CHECK-NEXT:               "begin": {
+// CHECK-NEXT:                "offset": 213,
+// CHECK-NEXT:                "col": 22,
+// CHECK-NEXT:                "tokLen": 1
+// CHECK-NEXT:               },
+// CHECK-NEXT:               "end": {
+// CHECK-NEXT:                "offset": 213,
+// CHECK-NEXT:                "col": 22,
+// CHECK-NEXT:                "tokLen": 1
+// CHECK-NEXT:               }
+// CHECK-NEXT:              },
+// CHECK-NEXT:              "type": {
+// CHECK-NEXT:               "qualType": "int"
+// CHECK-NEXT:              },
+// CHECK-NEXT:              "valueCategory": "prvalue",
+// CHECK-NEXT:              "value": "0"
+// CHECK-NEXT:             }
+// CHECK-NEXT:            ]
+// CHECK-NEXT:           }
+// CHECK-NEXT:          ]
+// CHECK-NEXT:         }
+// CHECK-NEXT:        ]
+// CHECK-NEXT:       },
+// CHECK-NEXT:       {
+// CHECK-NEXT:        "id": "0x{{.*}}",
+// CHECK-NEXT:        "kind": "LambdaExpr",
+// CHECK-NEXT:        "range": {
+// CHECK-NEXT:         "begin": {
+// CHECK-NEXT:          "offset": 221,
+// CHECK-NEXT:          "line": 12,
+// CHECK-NEXT:          "col": 3,
+// CHECK-NEXT:          "tokLen": 1
+// CHECK-NEXT:         },
+// CHECK-NEXT:         "end": {
+// CHECK-NEXT:          "offset": 233,
+// CHECK-NEXT:          "col": 15,
+// CHECK-NEXT:          "tokLen": 1
+// CHECK-NEXT:         }
+// CHECK-NEXT:        },
+// CHECK-NEXT:        "type": {
+// CHECK-NEXT:         "qualType": "(lambda at {{.*}}:12:3)"
+// CHECK-NEXT:        },
+// CHECK-NEXT:        "valueCategory": "prvalue",
+// CHECK-NEXT:        "hasExplicitParameters": true,
+// CHECK-NEXT:        "inner": [
+// CHECK-NEXT:         {
+// CHECK-NEXT:          "id": "0x{{.*}}",
+// CHECK-NEXT:          "kind": "CXXRecordDecl",
+// CHECK-NEXT:          "loc": {
+// CHECK-NEXT:           "offset": 221,
+// CHECK-NEXT:           "col": 3,
+// CHECK-NEXT:           "tokLen": 1
+// CHECK-NEXT:          },
+// CHECK-NEXT:          "range": {
+// CHECK-NEXT:           "begin": {
+// CHECK-NEXT:            "offset": 221,
+// CHECK-NEXT:            "col": 3,
+// CHECK-NEXT:            "tokLen": 1
+// CHECK-NEXT:           },
+// CHECK-NEXT:           "end": {
+// CHECK-NEXT:            "offset": 221,
+// CHECK-NEXT:            "col": 3,
+// CHECK-NEXT:            "tokLen": 1
+// CHECK-NEXT:           }
+// CHECK-NEXT:          },
+// CHECK-NEXT:          "isImplicit": true,
+// CHECK-NEXT:          "tagUsed": "class",
+// CHECK-NEXT:          "completeDefinition": true,
+// CHECK-NEXT:          "definitionData": {
+// CHECK-NEXT:           "canConstDefaultInit": true,
+// CHECK-NEXT:           "canPassInRegisters": true,
+// CHECK-NEXT:           "copyAssign": {
+// CHECK-NEXT:            "hasConstParam": true,
+// CHECK-NEXT:            "implicitHasConstParam": true,
+// CHECK-NEXT:            "needsImplicit": true,
+// CHECK-NEXT:            "trivial": true
+// CHECK-NEXT:           },
+// CHECK-NEXT:           "copyCtor": {
+// CHECK-NEXT:            "hasConstParam": true,
+// CHECK-NEXT:            "implicitHasConstParam": true,
+// CHECK-NEXT:            "needsImplicit": true,
+// CHECK-NEXT:            "simple": true,
+// CHECK-NEXT:            "trivial": true
+// CHECK-NEXT:           },
+// CHECK-NEXT:           "defaultCtor": {
+// CHECK-NEXT:            "defaultedIsConstexpr": true
+// CHECK-NEXT:           },
+// CHECK-NEXT:           "dtor": {
+// CHECK-NEXT:            "irrelevant": true,
+// CHECK-NEXT:            "simple": true,
+// CHECK-NEXT:            "trivial": true
+// CHECK-NEXT:           },
+// CHECK-NEXT:           "isLambda": true,
+// CHECK-NEXT:           "isLiteral": true,
+// CHECK-NEXT:           "isStandardLayout": true,
+// CHECK-NEXT:           "isTriviallyCopyable": true,
+// CHECK-NEXT:           "moveAssign": {},
+// CHECK-NEXT:           "moveCtor": {
+// CHECK-NEXT:            "exists": true,
+// CHECK-NEXT:            "needsImplicit": true,
+// CHECK-NEXT:            "simple": true,
+// CHECK-NEXT:            "trivial": true
+// CHECK-NEXT:           }
+// CHECK-NEXT:          },
+// CHECK-NEXT:          "inner": [
+// CHECK-NEXT:           {
+// CHECK-NEXT:            "id": "0x{{.*}}",
+// CHECK-NEXT:            "kind": "CXXMethodDecl",
+// CHECK-NEXT:            "loc": {
+// CHECK-NEXT:             "offset": 221,
+// CHECK-NEXT:             "col": 3,
+// CHECK-NEXT:             "tokLen": 1
+// CHECK-NEXT:            },
+// CHECK-NEXT:            "range": {
+// CHECK-NEXT:             "begin": {
+// CHECK-NEXT:              "offset": 231,
+// CHECK-NEXT:              "col": 13,
+// CHECK-NEXT:              "tokLen": 1
+// CHECK-NEXT:             },
+// CHECK-NEXT:             "end": {
+// CHECK-NEXT:              "offset": 233,
+// CHECK-NEXT:              "col": 15,
+// CHECK-NEXT:              "tokLen": 1
+// CHECK-NEXT:             }
+// CHECK-NEXT:            },
+// CHECK-NEXT:            "name": "operator()",
+// CHECK-NEXT:            "mangledName": "_ZZ4TestvENK3$_4clEv",
+// CHECK-NEXT:            "type": {
+// CHECK-NEXT:             "qualType": "void () const"
+// CHECK-NEXT:            },
+// CHECK-NEXT:            "inline": true,
+// CHECK-NEXT:            "constexpr": true,
+// CHECK-NEXT:            "inner": [
+// CHECK-NEXT:             {
+// CHECK-NEXT:              "id": "0x{{.*}}",
+// CHECK-NEXT:              "kind": "CompoundStmt",
+// CHECK-NEXT:              "range": {
+// CHECK-NEXT:               "begin": {
+// CHECK-NEXT:                "offset": 232,
+// CHECK-NEXT:                "col": 14,
+// CHECK-NEXT:                "tokLen": 1
+// CHECK-NEXT:               },
+// CHECK-NEXT:               "end": {
+// CHECK-NEXT:                "offset": 233,
+// CHECK-NEXT:                "col": 15,
+// CHECK-NEXT:                "tokLen": 1
+// CHECK-NEXT:               }
+// CHECK-NEXT:              }
+// CHECK-NEXT:             }
+// CHECK-NEXT:            ]
+// CHECK-NEXT:           },
+// CHECK-NEXT:           {
+// CHECK-NEXT:            "id": "0x{{.*}}",
+// CHECK-NEXT:            "kind": "FieldDecl",
+// CHECK-NEXT:            "loc": {
+// CHECK-NEXT:             "offset": 222,
+// CHECK-NEXT:             "col": 4,
+// CHECK-NEXT:             "tokLen": 1
+// CHECK-NEXT:            },
+// CHECK-NEXT:            "range": {
+// CHECK-NEXT:             "begin": {
+// CHECK-NEXT:              "offset": 222,
+// CHECK-NEXT:              "col": 4,
+// CHECK-NEXT:              "tokLen": 1
+// CHECK-NEXT:             },
+// CHECK-NEXT:             "end": {
+// CHECK-NEXT:              "offset": 222,
+// CHECK-NEXT:              "col": 4,
+// CHECK-NEXT:              "tokLen": 1
+// CHECK-NEXT:             }
+// CHECK-NEXT:            },
+// CHECK-NEXT:            "isImplicit": true,
+// CHECK-NEXT:            "type": {
+// CHECK-NEXT:             "qualType": "int"
+// CHECK-NEXT:            }
+// CHECK-NEXT:           },
+// CHECK-NEXT:           {
+// CHECK-NEXT:            "id": "0x{{.*}}",
+// CHECK-NEXT:            "kind": "FieldDecl",
+// CHECK-NEXT:            "loc": {
+// CHECK-NEXT:             "offset": 224,
+// CHECK-NEXT:             "col": 6,
+// CHECK-NEXT:             "tokLen": 1
+// CHECK-NEXT:            },
+// CHECK-NEXT:            "range": {
+// CHECK-NEXT:             "begin": {
+// CHECK-NEXT:              "offset": 224,
+// CHECK-NEXT:              "col": 6,
+// CHECK-NEXT:              "tokLen": 1
+// CHECK-NEXT:             },
+// CHECK-NEXT:             "end": {
+// CHECK-NEXT:              "offset": 224,
+// CHECK-NEXT:              "col": 6,
+// CHECK-NEXT:              "tokLen": 1
+// CHECK-NEXT:             }
+// CHECK-NEXT:            },
+// CHECK-NEXT:            "isImplicit": true,
+// CHECK-NEXT:            "type": {
+// CHECK-NEXT:             "qualType": "bool"
+// CHECK-NEXT:            }
+// CHECK-NEXT:           },
+// CHECK-NEXT:           {
+// CHECK-NEXT:            "id": "0x{{.*}}",
+// CHECK-NEXT:            "kind": "FieldDecl",
+// CHECK-NEXT:            "loc": {
+// CHECK-NEXT:             "offset": 226,
+// CHECK-NEXT:             "col": 8,
+// CHECK-NEXT:             "tokLen": 1
+// CHECK-NEXT:            },
+// CHECK-NEXT:            "range": {
+// CHECK-NEXT:             "begin": {
+// CHECK-NEXT:              "offset": 226,
+// CHECK-NEXT:              "col": 8,
+// CHECK-NEXT:              "tokLen": 1
+// CHECK-NEXT:             },
+// CHECK-NEXT:             "end": {
+// CHECK-NEXT:              "offset": 226,
+// CHECK-NEXT:              "col": 8,
+// CHECK-NEXT:              "tokLen": 1
+// CHECK-NEXT:             }
+// CHECK-NEXT:            },
+// CHECK-NEXT:            "isImplicit": true,
+// CHECK-NEXT:            "type": {
+// CHECK-NEXT:             "qualType": "char"
+// CHECK-NEXT:            }
+// CHECK-NEXT:           },
+// CHECK-NEXT:           {
+// CHECK-NEXT:            "id": "0x{{.*}}",
+// CHECK-NEXT:            "kind": "FieldDecl",
+// CHECK-NEXT:            "loc": {
+// CHECK-NEXT:             "offset": 228,
+// CHECK-NEXT:             "col": 10,
+// CHECK-NEXT:             "tokLen": 1
+// CHECK-NEXT:            },
+// CHECK-NEXT:            "range": {
+// CHECK-NEXT:             "begin": {
+// CHECK-NEXT:              "offset": 228,
+// CHECK-NEXT:              "col": 10,
+// CHECK-NEXT:              "tokLen": 1
+// CHECK-NEXT:             },
+// CHECK-NEXT:             "end": {
+// CHECK-NEXT:              "offset": 228,
+// CHECK-NEXT:              "col": 10,
+// CHECK-NEXT:              "tokLen": 1
+// CHECK-NEXT:             }
+// CHECK-NEXT:            },
+// CHECK-NEXT:            "isImplicit": true,
+// CHECK-NEXT:            "type": {
+// CHECK-NEXT:             "qualType": "double"
+// CHECK-NEXT:            }
+// CHECK-NEXT:           },
+// CHECK-NEXT:           {
+// CHECK-NEXT:            "id": "0x{{.*}}",
+// CHECK-NEXT:            "kind": "CXXDestructorDecl",
+// CHECK-NEXT:            "loc": {
+// CHECK-NEXT:             "offset": 221,
+// CHECK-NEXT:             "col": 3,
+// CHECK-NEXT:             "tokLen": 1
+// CHECK-NEXT:            },
+// CHECK-NEXT:            "range": {
+// CHECK-NEXT:             "begin": {
+// CHECK-NEXT:              "offset": 221,
+// CHECK-NEXT:              "col": 3,
+// CHECK-NEXT:              "tokLen": 1
+// CHECK-NEXT:             },
+// CHECK-NEXT:             "end": {
+// CHECK-NEXT:              "offset": 221,
+// CHECK-NEXT:              "col": 3,
+// CHECK-NEXT:              "tokLen": 1
+// CHECK-NEXT:             }
+// CHECK-NEXT:            },
+// CHECK-NEXT:            "isImplicit": true,
+// CHECK-NEXT:            "isReferenced": true,
+// CHECK-NEXT:            "name": "~(lambda at {{.*}}:12:3)",
+// CHECK-NEXT:            "mangledName": "_ZZ4TestvEN3$_4D1Ev",
+// CHECK-NEXT:            "type": {
+// CHECK-NEXT:             "qualType": "void () noexcept"
+// CHECK-NEXT:            },
+// CHECK-NEXT:            "inline": true,
+// CHECK-NEXT:            "constexpr": true,
+// CHECK-NEXT:            "explicitlyDefaulted": "default"
+// CHECK-NEXT:           }
+// CHECK-NEXT:          ]
+// CHECK-NEXT:         },
+// CHECK-NEXT:         {
+// CHECK-NEXT:          "id": "0x{{.*}}",
+// CHECK-NEXT:          "kind": "ImplicitCastExpr",
+// CHECK-NEXT:          "range": {
+// CHECK-NEXT:           "begin": {
+// CHECK-NEXT:            "offset": 222,
+// CHECK-NEXT:            "col": 4,
+// CHECK-NEXT:            "tokLen": 1
+// CHECK-NEXT:           },
+// CHECK-NEXT:           "end": {
+// CHECK-NEXT:            "offset": 222,
+// CHECK-NEXT:            "col": 4,
+// CHECK-NEXT:            "tokLen": 1
+// CHECK-NEXT:           }
+// CHECK-NEXT:          },
+// CHECK-NEXT:          "type": {
+// CHECK-NEXT:           "qualType": "int"
+// CHECK-NEXT:          },
+// CHECK-NEXT:          "valueCategory": "prvalue",
+// CHECK-NEXT:          "castKind": "LValueToRValue",
+// CHECK-NEXT:          "inner": [
+// CHECK-NEXT:           {
+// CHECK-NEXT:            "id": "0x{{.*}}",
+// CHECK-NEXT:            "kind": "DeclRefExpr",
+// CHECK-NEXT:            "range": {
+// CHECK-NEXT:             "begin": {
+// CHECK-NEXT:              "offset": 222,
+// CHECK-NEXT:              "col": 4,
+// CHECK-NEXT:              "tokLen": 1
+// CHECK-NEXT:             },
+// CHECK-NEXT:             "end": {
+// CHECK-NEXT:              "offset": 222,
+// CHECK-NEXT:              "col": 4,
+// CHECK-NEXT:              "tokLen": 1
+// CHECK-NEXT:             }
+// CHECK-NEXT:            },
+// CHECK-NEXT:            "type": {
+// CHECK-NEXT:             "qualType": "int"
+// CHECK-NEXT:            },
+// CHECK-NEXT:            "valueCategory": "lvalue",
+// CHECK-NEXT:            "referencedDecl": {
+// CHECK-NEXT:             "id": "0x{{.*}}",
+// CHECK-NEXT:             "kind": "VarDecl",
+// CHECK-NEXT:             "name": "a",
+// CHECK-NEXT:             "type": {
+// CHECK-NEXT:              "qualType": "int"
+// CHECK-NEXT:             }
+// CHECK-NEXT:            }
+// CHECK-NEXT:           }
+// CHECK-NEXT:          ]
+// CHECK-NEXT:         },
+// CHECK-NEXT:         {
+// CHECK-NEXT:          "id": "0x{{.*}}",
+// CHECK-NEXT:          "kind": "ImplicitCastExpr",
+// CHECK-NEXT:          "range": {
+// CHECK-NEXT:           "begin": {
+// CHECK-NEXT:            "offset": 224,
+// CHECK-NEXT:            "col": 6,
+// CHECK-NEXT:            "tokLen": 1
+// CHECK-NEXT:           },
+// CHECK-NEXT:           "end": {
+// CHECK-NEXT:            "offset": 224,
+// CHECK-NEXT:            "col": 6,
+// CHECK-NEXT:            "tokLen": 1
+// CHECK-NEXT:           }
+// CHECK-NEXT:          },
+// CHECK-NEXT:          "type": {
+// CHECK-NEXT:           "qualType": "bool"
+// CHECK-NEXT:          },
+// CHECK-NEXT:          "valueCategory": "prvalue",
+// CHECK-NEXT:          "castKind": "LValueToRValue",
+// CHECK-NEXT:          "inner": [
+// CHECK-NEXT:           {
+// CHECK-NEXT:            "id": "0x{{.*}}",
+// CHECK-NEXT:            "kind": "DeclRefExpr",
+// CHECK-NEXT:            "range": {
+// CHECK-NEXT:             "begin": {
+// CHECK-NEXT:              "offset": 224,
+// CHECK-NEXT:              "col": 6,
+// CHECK-NEXT:              "tokLen": 1
+// CHECK-NEXT:             },
+// CHECK-NEXT:             "end": {
+// CHECK-NEXT:              "offset": 224,
+// CHECK-NEXT:              "col": 6,
+// CHECK-NEXT:              "tokLen": 1
+// CHECK-NEXT:             }
+// CHECK-NEXT:            },
+// CHECK-NEXT:            "type": {
+// CHECK-NEXT:             "qualType": "bool"
+// CHECK-NEXT:            },
+// CHECK-NEXT:            "valueCategory": "lvalue",
+// CHECK-NEXT:            "referencedDecl": {
+// CHECK-NEXT:             "id": "0x{{.*}}",
+// CHECK-NEXT:             "kind": "VarDecl",
+// CHECK-NEXT:             "name": "b",
+// CHECK-NEXT:             "type": {
+// CHECK-NEXT:              "qualType": "bool"
+// CHECK-NEXT:             }
+// CHECK-NEXT:            }
+// CHECK-NEXT:           }
+// CHECK-NEXT:          ]
+// CHECK-NEXT:         },
+// CHECK-NEXT:         {
+// CHECK-NEXT:          "id": "0x{{.*}}",
+// CHECK-NEXT:          "kind": "ImplicitCastExpr",
+// CHECK-NEXT:          "range": {
+// CHECK-NEXT:           "begin": {
+// CHECK-NEXT:            "offset": 226,
+// CHECK-NEXT:            "col": 8,
+// CHECK-NEXT:            "tokLen": 1
+// CHECK-NEXT:           },
+// CHECK-NEXT:           "end": {
+// CHECK-NEXT:            "offset": 226,
+// CHECK-NEXT:            "col": 8,
+// CHECK-NEXT:            "tokLen": 1
+// CHECK-NEXT:           }
+// CHECK-NEXT:          },
+// CHECK-NEXT:          "type": {
+// CHECK-NEXT:           "qualType": "char"
+// CHECK-NEXT:          },
+// CHECK-NEXT:          "valueCategory": "prvalue",
+// CHECK-NEXT:          "castKind": "LValueToRValue",
+// CHECK-NEXT:          "inner": [
+// CHECK-NEXT:           {
+// CHECK-NEXT:            "id": "0x{{.*}}",
+// CHECK-NEXT:            "kind": "DeclRefExpr",
+// CHECK-NEXT:            "range": {
+// CHECK-NEXT:             "begin": {
+// CHECK-NEXT:              "offset": 226,
+// CHECK-NEXT:              "col": 8,
+// CHECK-NEXT:              "tokLen": 1
+// CHECK-NEXT:             },
+// CHECK-NEXT:             "end": {
+// CHECK-NEXT:              "offset": 226,
+// CHECK-NEXT:              "col": 8,
+// CHECK-NEXT:              "tokLen": 1
+// CHECK-NEXT:             }
+// CHECK-NEXT:            },
+// CHECK-NEXT:            "type": {
+// CHECK-NEXT:             "qualType": "char"
+// CHECK-NEXT:            },
+// CHECK-NEXT:            "valueCategory": "lvalue",
+// CHECK-NEXT:            "referencedDecl": {
+// CHECK-NEXT:             "id": "0x{{.*}}",
+// CHECK-NEXT:             "kind": "VarDecl",
+// CHECK-NEXT:             "name": "c",
+// CHECK-NEXT:             "type": {
+// CHECK-NEXT:              "qualType": "char"
+// CHECK-NEXT:             }
+// CHECK-NEXT:            }
+// CHECK-NEXT:           }
+// CHECK-NEXT:          ]
+// CHECK-NEXT:         },
+// CHECK-NEXT:         {
+// CHECK-NEXT:          "id": "0x{{.*}}",
+// CHECK-NEXT:          "kind": "ImplicitCastExpr",
+// CHECK-NEXT:          "range": {
+// CHECK-NEXT:           "begin": {
+// CHECK-NEXT:            "offset": 228,
+// CHECK-NEXT:            "col": 10,
+// CHECK-NEXT:            "tokLen": 1
+// CHECK-NEXT:           },
+// CHECK-NEXT:           "end": {
+// CHECK-NEXT:            "offset": 228,
+// CHECK-NEXT:            "col": 10,
+// CHECK-NEXT:            "tokLen": 1
+// CHECK-NEXT:           }
+// CHECK-NEXT:          },
+// CHECK-NEXT:          "type": {
+// CHECK-NEXT:           "qualType": "double"
+// CHECK-NEXT:          },
+// CHECK-NEXT:          "valueCategory": "prvalue",
+// CHECK-NEXT:          "castKind": "LValueToRValue",
+// CHECK-NEXT:          "inner": [
+// CHECK-NEXT:           {
+// CHECK-NEXT:            "id": "0x{{.*}}",
+// CHECK-NEXT:            "kind": "DeclRefExpr",
+// CHECK-NEXT:            "range": {
+// CHECK-NEXT:             "begin": {
+// CHECK-NEXT:              "offset": 228,
+// CHECK-NEXT:              "col": 10,
+// CHECK-NEXT:              "tokLen": 1
+// CHECK-NEXT:             },
+// CHECK-NEXT:             "end": {
+// CHECK-NEXT:              "offset": 228,
+// CHECK-NEXT:              "col": 10,
+// CHECK-NEXT:              "tokLen": 1
+// CHECK-NEXT:             }
+// CHECK-NEXT:            },
+// CHECK-NEXT:            "type": {
+// CHECK-NEXT:             "qualType": "double"
+// CHECK-NEXT:            },
+// CHECK-NEXT:            "valueCategory": "lvalue",
+// CHECK-NEXT:            "referencedDecl": {
+// CHECK-NEXT:             "id": "0x{{.*}}",
+// CHECK-NEXT:             "kind": "VarDecl",
+// CHECK-NEXT:             "name": "d",
+// CHECK-NEXT:             "type": {
+// CHECK-NEXT:              "qualType": "double"
+// CHECK-NEXT:             }
+// CHECK-NEXT:            }
+// CHECK-NEXT:           }
+// CHECK-NEXT:          ]
+// CHECK-NEXT:         },
+// CHECK-NEXT:         {
+// CHECK-NEXT:          "id": "0x{{.*}}",
+// CHECK-NEXT:          "kind": "CompoundStmt",
+// CHECK-NEXT:          "range": {
+// CHECK-NEXT:           "begin": {
+// CHECK-NEXT:            "offset": 232,
+// CHECK-NEXT:            "col": 14,
+// CHECK-NEXT:            "tokLen": 1
+// CHECK-NEXT:           },
+// CHECK-NEXT:           "end": {
+// CHECK-NEXT:            "offset": 233,
+// CHECK-NEXT:            "col": 15,
+// CHECK-NEXT:            "tokLen": 1
+// CHECK-NEXT:           }
+// CHECK-NEXT:          }
+// CHECK-NEXT:         }
+// CHECK-NEXT:        ]
+// CHECK-NEXT:       },
+// CHECK-NEXT:       {
+// CHECK-NEXT:        "id": "0x{{.*}}",
+// CHECK-NEXT:        "kind": "LambdaExpr",
+// CHECK-NEXT:        "range": {
+// CHECK-NEXT:         "begin": {
+// CHECK-NEXT:          "offset": 238,
+// CHECK-NEXT:          "line": 13,
+// CHECK-NEXT:          "col": 3,
+// CHECK-NEXT:          "tokLen": 1
+// CHECK-NEXT:         },
+// CHECK-NEXT:         "end": {
+// CHECK-NEXT:          "offset": 242,
+// CHECK-NEXT:          "col": 7,
+// CHECK-NEXT:          "tokLen": 1
+// CHECK-NEXT:         }
+// CHECK-NEXT:        },
+// CHECK-NEXT:        "type": {
+// CHECK-NEXT:         "qualType": "(lambda at {{.*}}:13:3)"
+// CHECK-NEXT:        },
+// CHECK-NEXT:        "valueCategory": "prvalue",
+// CHECK-NEXT:        "hasExplicitParameters": false,
+// CHECK-NEXT:        "inner": [
+// CHECK-NEXT:         {
+// CHECK-NEXT:          "id": "0x{{.*}}",
+// CHECK-NEXT:          "kind": "CXXRecordDecl",
+// CHECK-NEXT:          "loc": {
+// CHECK-NEXT:           "offset": 238,
+// CHECK-NEXT:           "col": 3,
+// CHECK-NEXT:           "tokLen": 1
+// CHECK-NEXT:          },
+// CHECK-NEXT:          "range": {
+// CHECK-NEXT:           "begin": {
+// CHECK-NEXT:            "offset": 238,
+// CHECK-NEXT:            "col": 3,
+// CHECK-NEXT:            "tokLen": 1
+// CHECK-NEXT:           },
+// CHECK-NEXT:           "end": {
+// CHECK-NEXT:            "offset": 238,
+// CHECK-NEXT:            "col": 3,
+// CHECK-NEXT:            "tokLen": 1
+// CHECK-NEXT:           }
+// CHECK-NEXT:          },
+// CHECK-NEXT:          "isImplicit": true,
+// CHECK-NEXT:          "tagUsed": "class",
+// CHECK-NEXT:          "completeDefinition": true,
+// CHECK-NEXT:          "definitionData": {
+// CHECK-NEXT:           "canConstDefaultInit": true,
+// CHECK-NEXT:           "canPassInRegisters": true,
+// CHECK-NEXT:           "copyAssign": {
+// CHECK-NEXT:            "hasConstParam": true,
+// CHECK-NEXT:            "implicitHasConstParam": true,
+// CHECK-NEXT:            "needsImplicit": true,
+// CHECK-NEXT:            "trivial": true
+// CHECK-NEXT:           },
+// CHECK-NEXT:           "copyCtor": {
+// CHECK-NEXT:            "hasConstParam": true,
+// CHECK-NEXT:            "implicitHasConstParam": true,
+// CHECK-NEXT:            "needsImplicit": true,
+// CHECK-NEXT:            "simple": true,
+// CHECK-NEXT:            "trivial": true
+// CHECK-NEXT:           },
+// CHECK-NEXT:           "defaultCtor": {
+// CHECK-NEXT:            "defaultedIsConstexpr": true
+// CHECK-NEXT:           },
+// CHECK-NEXT:           "dtor": {
+// CHECK-NEXT:            "irrelevant": true,
+// CHECK-NEXT:            "simple": true,
+// CHECK-NEXT:            "trivial": true
+// CHECK-NEXT:           },
+// CHECK-NEXT:           "isLambda": true,
+// CHECK-NEXT:           "isLiteral": true,
+// CHECK-NEXT:           "isStandardLayout": true,
+// CHECK-NEXT:           "isTriviallyCopyable": true,
+// CHECK-NEXT:           "moveAssign": {},
+// CHECK-NEXT:           "moveCtor": {
+// CHECK-NEXT:            "exists": true,
+// CHECK-NEXT:            "needsImplicit": true,
+// CHECK-NEXT:            "simple": true,
+// CHECK-NEXT:            "trivial": true
+// CHECK-NEXT:           }
+// CHECK-NEXT:          },
+// CHECK-NEXT:          "inner": [
+// CHECK-NEXT:           {
+// CHECK-NEXT:            "id": "0x{{.*}}",
+// CHECK-NEXT:            "kind": "CXXMethodDecl",
+// CHECK-NEXT:            "loc": {
+// CHECK-NEXT:             "offset": 238,
+// CHECK-NEXT:             "col": 3,
+// CHECK-NEXT:             "tokLen": 1
+// CHECK-NEXT:            },
+// CHECK-NEXT:            "range": {
+// CHECK-NEXT:             "begin": {
+// CHECK-NEXT:              "offset": 240,
+// CHECK-NEXT:              "col": 5,
+// CHECK-NEXT:              "tokLen": 1
+// CHECK-NEXT:             },
+// CHECK-NEXT:             "end": {
+// CHECK-NEXT:              "offset": 242,
+// CHECK-NEXT:              "col": 7,
+// CHECK-NEXT:              "tokLen": 1
+// CHECK-NEXT:             }
+// CHECK-NEXT:            },
+// CHECK-NEXT:            "name": "operator()",
+// CHECK-NEXT:            "mangledName": "_ZZ4TestvENK3$_5clEv",
+// CHECK-NEXT:            "type": {
+// CHECK-NEXT:             "qualType": "auto () const -> void"
+// CHECK-NEXT:            },
+// CHECK-NEXT:            "inline": true,
+// CHECK-NEXT:            "constexpr": true,
+// CHECK-NEXT:            "inner": [
+// CHECK-NEXT:             {
+// CHECK-NEXT:              "id": "0x{{.*}}",
+// CHECK-NEXT:              "kind": "CompoundStmt",
+// CHECK-NEXT:              "range": {
+// CHECK-NEXT:               "begin": {
+// CHECK-NEXT:                "offset": 241,
+// CHECK-NEXT:                "col": 6,
+// CHECK-NEXT:                "tokLen": 1
+// CHECK-NEXT:               },
+// CHECK-NEXT:               "end": {
+// CHECK-NEXT:                "offset": 242,
+// CHECK-NEXT:                "col": 7,
+// CHECK-NEXT:                "tokLen": 1
+// CHECK-NEXT:               }
+// CHECK-NEXT:              }
+// CHECK-NEXT:             }
+// CHECK-NEXT:            ]
+// CHECK-NEXT:           },
+// CHECK-NEXT:           {
+// CHECK-NEXT:            "id": "0x{{.*}}",
+// CHECK-NEXT:            "kind": "FieldDecl",
+// CHECK-NEXT:            "loc": {
+// CHECK-NEXT:             "offset": 239,
+// CHECK-NEXT:             "col": 4,
+// CHECK-NEXT:             "tokLen": 1
+// CHECK-NEXT:            },
+// CHECK-NEXT:            "range": {
+// CHECK-NEXT:             "begin": {
+// CHECK-NEXT:              "offset": 239,
+// CHECK-NEXT:              "col": 4,
+// CHECK-NEXT:              "tokLen": 1
+// CHECK-NEXT:             },
+// CHECK-NEXT:             "end": {
+// CHECK-NEXT:              "offset": 239,
+// CHECK-NEXT:              "col": 4,
+// CHECK-NEXT:              "tokLen": 1
+// CHECK-NEXT:             }
+// CHECK-NEXT:            },
+// CHECK-NEXT:            "isImplicit": true,
+// CHECK-NEXT:            "type": {
+// CHECK-NEXT:             "qualType": "int"
+// CHECK-NEXT:            }
+// CHECK-NEXT:           },
+// CHECK-NEXT:           {
+// CHECK-NEXT:            "id": "0x{{.*}}",
+// CHECK-NEXT:            "kind": "CXXDestructorDecl",
+// CHECK-NEXT:            "loc": {
+// CHECK-NEXT:             "offset": 238,
+// CHECK-NEXT:             "col": 3,
+// CHECK-NEXT:             "tokLen": 1
+// CHECK-NEXT:            },
+// CHECK-NEXT:            "range": {
+// CHECK-NEXT:             "begin": {
+// CHECK-NEXT:              "offset": 238,
+// CHECK-NEXT:              "col": 3,
+// CHECK-NEXT:              "tokLen": 1
+// CHECK-NEXT:             },
+// CHECK-NEXT:             "end": {
+// CHECK-NEXT:              "offset": 238,
+// CHECK-NEXT:              "col": 3,
+// CHECK-NEXT:              "tokLen": 1
+// CHECK-NEXT:             }
+// CHECK-NEXT:            },
+// CHECK-NEXT:            "isImplicit": true,
+// CHECK-NEXT:            "isReferenced": true,
+// CHECK-NEXT:            "name": "~(lambda at {{.*}}:13:3)",
+// CHECK-NEXT:            "mangledName": "_ZZ4TestvEN3$_5D1Ev",
+// CHECK-NEXT:            "type": {
+// CHECK-NEXT:             "qualType": "void () noexcept"
+// CHECK-NEXT:            },
+// CHECK-NEXT:            "inline": true,
+// CHECK-NEXT:            "constexpr": true,
+// CHECK-NEXT:            "explicitlyDefaulted": "default"
+// CHECK-NEXT:           }
+// CHECK-NEXT:          ]
+// CHECK-NEXT:         },
+// CHECK-NEXT:         {
+// CHECK-NEXT:          "id": "0x{{.*}}",
+// CHECK-NEXT:          "kind": "ImplicitCastExpr",
+// CHECK-NEXT:          "range": {
+// CHECK-NEXT:           "begin": {
+// CHECK-NEXT:            "offset": 239,
+// CHECK-NEXT:            "col": 4,
+// CHECK-NEXT:            "tokLen": 1
+// CHECK-NEXT:           },
+// CHECK-NEXT:           "end": {
+// CHECK-NEXT:            "offset": 239,
+// CHECK-NEXT:            "col": 4,
+// CHECK-NEXT:            "tokLen": 1
+// CHECK-NEXT:           }
+// CHECK-NEXT:          },
+// CHECK-NEXT:          "type": {
+// CHECK-NEXT:           "qualType": "int"
+// CHECK-NEXT:          },
+// CHECK-NEXT:          "valueCategory": "prvalue",
+// CHECK-NEXT:          "castKind": "LValueToRValue",
+// CHECK-NEXT:          "inner": [
+// CHECK-NEXT:           {
+// CHECK-NEXT:            "id": "0x{{.*}}",
+// CHECK-NEXT:            "kind": "DeclRefExpr",
+// CHECK-NEXT:            "range": {
+// CHECK-NEXT:             "begin": {
+// CHECK-NEXT:              "offset": 239,
+// CHECK-NEXT:              "col": 4,
+// CHECK-NEXT:              "tokLen": 1
+// CHECK-NEXT:             },
+// CHECK-NEXT:             "end": {
+// CHECK-NEXT:              "offset": 239,
+// CHECK-NEXT:              "col": 4,
+// CHECK-NEXT:              "tokLen": 1
+// CHECK-NEXT:             }
+// CHECK-NEXT:            },
+// CHECK-NEXT:            "type": {
+// CHECK-NEXT:             "qualType": "int"
+// CHECK-NEXT:            },
+// CHECK-NEXT:            "valueCategory": "lvalue",
+// CHECK-NEXT:            "referencedDecl": {
+// CHECK-NEXT:             "id": "0x{{.*}}",
+// CHECK-NEXT:             "kind": "VarDecl",
+// CHECK-NEXT:             "name": "a",
+// CHECK-NEXT:             "type": {
+// CHECK-NEXT:              "qualType": "int"
+// CHECK-NEXT:             }
+// CHECK-NEXT:            }
+// CHECK-NEXT:           }
+// CHECK-NEXT:          ]
+// CHECK-NEXT:         },
+// CHECK-NEXT:         {
+// CHECK-NEXT:          "id": "0x{{.*}}",
+// CHECK-NEXT:          "kind": "CompoundStmt",
+// CHECK-NEXT:          "range": {
+// CHECK-NEXT:           "begin": {
+// CHECK-NEXT:            "offset": 241,
+// CHECK-NEXT:            "col": 6,
+// CHECK-NEXT:            "tokLen": 1
+// CHECK-NEXT:           },
+// CHECK-NEXT:           "end": {
+// CHECK-NEXT:            "offset": 242,
+// CHECK-NEXT:            "col": 7,
+// CHECK-NEXT:            "tokLen": 1
+// CHECK-NEXT:           }
+// CHECK-NEXT:          }
+// CHECK-NEXT:         }
+// CHECK-NEXT:        ]
+// CHECK-NEXT:       },
+// CHECK-NEXT:       {
+// CHECK-NEXT:        "id": "0x{{.*}}",
+// CHECK-NEXT:        "kind": "LambdaExpr",
+// CHECK-NEXT:        "range": {
+// CHECK-NEXT:         "begin": {
+// CHECK-NEXT:          "offset": 247,
+// CHECK-NEXT:          "line": 14,
+// CHECK-NEXT:          "col": 3,
+// CHECK-NEXT:          "tokLen": 1
+// CHECK-NEXT:         },
+// CHECK-NEXT:         "end": {
+// CHECK-NEXT:          "offset": 253,
+// CHECK-NEXT:          "col": 9,
+// CHECK-NEXT:          "tokLen": 1
+// CHECK-NEXT:         }
+// CHECK-NEXT:        },
+// CHECK-NEXT:        "type": {
+// CHECK-NEXT:         "qualType": "(lambda at {{.*}}:14:3)"
+// CHECK-NEXT:        },
+// CHECK-NEXT:        "valueCategory": "prvalue",
+// CHECK-NEXT:        "hasExplicitParameters": true,
+// CHECK-NEXT:        "inner": [
+// CHECK-NEXT:         {
+// CHECK-NEXT:          "id": "0x{{.*}}",
+// CHECK-NEXT:          "kind": "CXXRecordDecl",
+// CHECK-NEXT:          "loc": {
+// CHECK-NEXT:           "offset": 247,
+// CHECK-NEXT:           "col": 3,
+// CHECK-NEXT:           "tokLen": 1
+// CHECK-NEXT:          },
+// CHECK-NEXT:          "range": {
+// CHECK-NEXT:           "begin": {
+// CHECK-NEXT:            "offset": 247,
+// CHECK-NEXT:            "col": 3,
+// CHECK-NEXT:            "tokLen": 1
+// CHECK-NEXT:           },
+// CHECK-NEXT:           "end": {
+// CHECK-NEXT:            "offset": 247,
+// CHECK-NEXT:            "col": 3,
+// CHECK-NEXT:            "tokLen": 1
+// CHECK-NEXT:           }
+// CHECK-NEXT:          },
+// CHECK-NEXT:          "isImplicit": true,
+// CHECK-NEXT:          "tagUsed": "class",
+// CHECK-NEXT:          "completeDefinition": true,
+// CHECK-NEXT:          "definitionData": {
+// CHECK-NEXT:           "canConstDefaultInit": true,
+// CHECK-NEXT:           "canPassInRegisters": true,
+// CHECK-NEXT:           "copyAssign": {
+// CHECK-NEXT:            "hasConstParam": true,
+// CHECK-NEXT:            "implicitHasConstParam": true,
+// CHECK-NEXT:            "needsImplicit": true,
+// CHECK-NEXT:            "trivial": true
+// CHECK-NEXT:           },
+// CHECK-NEXT:           "copyCtor": {
+// CHECK-NEXT:            "hasConstParam": true,
+// CHECK-NEXT:            "implicitHasConstParam": true,
+// CHECK-NEXT:            "needsImplicit": true,
+// CHECK-NEXT:            "simple": true,
+// CHECK-NEXT:            "trivial": true
+// CHECK-NEXT:           },
+// CHECK-NEXT:           "defaultCtor": {
+// CHECK-NEXT:            "defaultedIsConstexpr": true
+// CHECK-NEXT:           },
+// CHECK-NEXT:           "dtor": {
+// CHECK-NEXT:            "irrelevant": true,
+// CHECK-NEXT:            "simple": true,
+// CHECK-NEXT:            "trivial": true
+// CHECK-NEXT:           },
+// CHECK-NEXT:           "isEmpty": true,
+// CHECK-NEXT:           "isLambda": true,
+// CHECK-NEXT:           "isLiteral": true,
+// CHECK-NEXT:           "isStandardLayout": true,
+// CHECK-NEXT:           "isTriviallyCopyable": true,
+// CHECK-NEXT:           "moveAssign": {},
+// CHECK-NEXT:           "moveCtor": {
+// CHECK-NEXT:            "exists": true,
+// CHECK-NEXT:            "needsImplicit": true,
+// CHECK-NEXT:            "simple": true,
+// CHECK-NEXT:            "trivial": true
+// CHECK-NEXT:           }
+// CHECK-NEXT:          },
+// CHECK-NEXT:          "inner": [
+// CHECK-NEXT:           {
+// CHECK-NEXT:            "id": "0x{{.*}}",
+// CHECK-NEXT:            "kind": "CXXMethodDecl",
+// CHECK-NEXT:            "loc": {
+// CHECK-NEXT:             "offset": 247,
+// CHECK-NEXT:             "col": 3,
+// CHECK-NEXT:             "tokLen": 1
+// CHECK-NEXT:            },
+// CHECK-NEXT:            "range": {
+// CHECK-NEXT:             "begin": {
+// CHECK-NEXT:              "offset": 251,
+// CHECK-NEXT:              "col": 7,
+// CHECK-NEXT:              "tokLen": 1
+// CHECK-NEXT:             },
+// CHECK-NEXT:             "end": {
+// CHECK-NEXT:              "offset": 253,
+// CHECK-NEXT:              "col": 9,
+// CHECK-NEXT:              "tokLen": 1
+// CHECK-NEXT:             }
+// CHECK-NEXT:            },
+// CHECK-NEXT:            "name": "operator()",
+// CHECK-NEXT:            "mangledName": "_ZZ4TestvENK3$_6clEv",
+// CHECK-NEXT:            "type": {
+// CHECK-NEXT:             "qualType": "void () const"
+// CHECK-NEXT:            },
+// CHECK-NEXT:            "inline": true,
+// CHECK-NEXT:            "constexpr": true,
+// CHECK-NEXT:            "inner": [
+// CHECK-NEXT:             {
+// CHECK-NEXT:              "id": "0x{{.*}}",
+// CHECK-NEXT:              "kind": "CompoundStmt",
+// CHECK-NEXT:              "range": {
+// CHECK-NEXT:               "begin": {
+// CHECK-NEXT:                "offset": 252,
+// CHECK-NEXT:                "col": 8,
+// CHECK-NEXT:                "tokLen": 1
+// CHECK-NEXT:               },
+// CHECK-NEXT:               "end": {
+// CHECK-NEXT:                "offset": 253,
+// CHECK-NEXT:                "col": 9,
+// CHECK-NEXT:                "tokLen": 1
+// CHECK-NEXT:               }
+// CHECK-NEXT:              }
+// CHECK-NEXT:             }
+// CHECK-NEXT:            ]
+// CHECK-NEXT:           },
+// CHECK-NEXT:           {
+// CHECK-NEXT:            "id": "0x{{.*}}",
+// CHECK-NEXT:            "kind": "CXXDestructorDecl",
+// CHECK-NEXT:            "loc": {
+// CHECK-NEXT:             "offset": 247,
+// CHECK-NEXT:             "col": 3,
+// CHECK-NEXT:             "tokLen": 1
+// CHECK-NEXT:            },
+// CHECK-NEXT:            "range": {
+// CHECK-NEXT:             "begin": {
+// CHECK-NEXT:              "offset": 247,
+// CHECK-NEXT:              "col": 3,
+// CHECK-NEXT:              "tokLen": 1
+// CHECK-NEXT:             },
+// CHECK-NEXT:             "end": {
+// CHECK-NEXT:              "offset": 247,
+// CHECK-NEXT:              "col": 3,
+// CHECK-NEXT:              "tokLen": 1
+// CHECK-NEXT:             }
+// CHECK-NEXT:            },
+// CHECK-NEXT:            "isImplicit": true,
+// CHECK-NEXT:            "isReferenced": true,
+// CHECK-NEXT:            "name": "~(lambda at {{.*}}:14:3)",
+// CHECK-NEXT:            "mangledName": "_ZZ4TestvEN3$_6D1Ev",
+// CHECK-NEXT:            "type": {
+// CHECK-NEXT:             "qualType": "void () noexcept"
+// CHECK-NEXT:            },
+// CHECK-NEXT:            "inline": true,
+// CHECK-NEXT:            "constexpr": true,
+// CHECK-NEXT:            "explicitlyDefaulted": "default"
+// CHECK-NEXT:           }
+// CHECK-NEXT:          ]
+// CHECK-NEXT:         },
+// CHECK-NEXT:         {
+// CHECK-NEXT:          "id": "0x{{.*}}",
+// CHECK-NEXT:          "kind": "CompoundStmt",
+// CHECK-NEXT:          "range": {
+// CHECK-NEXT:           "begin": {
+// CHECK-NEXT:            "offset": 252,
+// CHECK-NEXT:            "col": 8,
+// CHECK-NEXT:            "tokLen": 1
+// CHECK-NEXT:           },
+// CHECK-NEXT:           "end": {
+// CHECK-NEXT:            "offset": 253,
+// CHECK-NEXT:            "col": 9,
+// CHECK-NEXT:            "tokLen": 1
+// CHECK-NEXT:           }
+// CHECK-NEXT:          }
+// CHECK-NEXT:         }
+// CHECK-NEXT:        ]
+// CHECK-NEXT:       },
+// CHECK-NEXT:       {
+// CHECK-NEXT:        "id": "0x{{.*}}",
+// CHECK-NEXT:        "kind": "DeclStmt",
+// CHECK-NEXT:        "range": {
+// CHECK-NEXT:         "begin": {
+// CHECK-NEXT:          "offset": 258,
+// CHECK-NEXT:          "line": 15,
+// CHECK-NEXT:          "col": 3,
+// CHECK-NEXT:          "tokLen": 6
+// CHECK-NEXT:         },
+// CHECK-NEXT:         "end": {
+// CHECK-NEXT:          "offset": 328,
+// CHECK-NEXT:          "line": 20,
+// CHECK-NEXT:          "col": 4,
+// CHECK-NEXT:          "tokLen": 1
+// CHECK-NEXT:         }
+// CHECK-NEXT:        },
+// CHECK-NEXT:        "inner": [
+// CHECK-NEXT:         {
+// CHECK-NEXT:          "id": "0x{{.*}}",
+// CHECK-NEXT:          "kind": "CXXRecordDecl",
+// CHECK-NEXT:          "loc": {
+// CHECK-NEXT:           "offset": 265,
+// CHECK-NEXT:           "line": 15,
+// CHECK-NEXT:           "col": 10,
+// CHECK-NEXT:           "tokLen": 1
+// CHECK-NEXT:          },
+// CHECK-NEXT:          "range": {
+// CHECK-NEXT:           "begin": {
+// CHECK-NEXT:            "offset": 258,
+// CHECK-NEXT:            "col": 3,
+// CHECK-NEXT:            "tokLen": 6
+// CHECK-NEXT:           },
+// CHECK-NEXT:           "end": {
+// CHECK-NEXT:            "offset": 327,
+// CHECK-NEXT:            "line": 20,
+// CHECK-NEXT:            "col": 3,
+// CHECK-NEXT:            "tokLen": 1
+// CHECK-NEXT:           }
+// CHECK-NEXT:          },
+// CHECK-NEXT:          "name": "S",
+// CHECK-NEXT:          "tagUsed": "struct",
+// CHECK-NEXT:          "completeDefinition": true,
+// CHECK-NEXT:          "definitionData": {
+// CHECK-NEXT:           "canConstDefaultInit": true,
+// CHECK-NEXT:           "canPassInRegisters": true,
+// CHECK-NEXT:           "copyAssign": {
+// CHECK-NEXT:            "hasConstParam": true,
+// CHECK-NEXT:            "implicitHasConstParam": true,
+// CHECK-NEXT:            "needsImplicit": true,
+// CHECK-NEXT:            "simple": true,
+// CHECK-NEXT:            "trivial": true
+// CHECK-NEXT:           },
+// CHECK-NEXT:           "copyCtor": {
+// CHECK-NEXT:            "hasConstParam": true,
+// CHECK-NEXT:            "implicitHasConstParam": true,
+// CHECK-NEXT:            "needsImplicit": true,
+// CHECK-NEXT:            "simple": true,
+// CHECK-NEXT:            "trivial": true
+// CHECK-NEXT:           },
+// CHECK-NEXT:           "defaultCtor": {
+// CHECK-NEXT:            "defaultedIsConstexpr": true,
+// CHECK-NEXT:            "exists": true,
+// CHECK-NEXT:            "isConstexpr": true,
+// CHECK-NEXT:            "needsImplicit": true,
+// CHECK-NEXT:            "trivial": true
+// CHECK-NEXT:           },
+// CHECK-NEXT:           "dtor": {
+// CHECK-NEXT:            "irrelevant": true,
+// CHECK-NEXT:            "needsImplicit": true,
+// CHECK-NEXT:            "simple": true,
+// CHECK-NEXT:            "trivial": true
+// CHECK-NEXT:           },
+// CHECK-NEXT:           "hasConstexprNonCopyMoveConstructor": true,
+// CHECK-NEXT:           "isAggregate": true,
+// CHECK-NEXT:           "isEmpty": true,
+// CHECK-NEXT:           "isLiteral": true,
+// CHECK-NEXT:           "isPOD": true,
+// CHECK-NEXT:           "isStandardLayout": true,
+// CHECK-NEXT:           "isTrivial": true,
+// CHECK-NEXT:           "isTriviallyCopyable": true,
+// CHECK-NEXT:           "moveAssign": {
+// CHECK-NEXT:            "exists": true,
+// CHECK-NEXT:            "needsImplicit": true,
+// CHECK-NEXT:            "simple": true,
+// CHECK-NEXT:            "trivial": true
+// CHECK-NEXT:           },
+// CHECK-NEXT:           "moveCtor": {
+// CHECK-NEXT:            "exists": true,
+// CHECK-NEXT:            "needsImplicit": true,
+// CHECK-NEXT:            "simple": true,
+// CHECK-NEXT:            "trivial": true
+// CHECK-NEXT:           }
+// CHECK-NEXT:          },
+// CHECK-NEXT:          "inner": [
+// CHECK-NEXT:           {
+// CHECK-NEXT:            "id": "0x{{.*}}",
+// CHECK-NEXT:            "kind": "CXXRecordDecl",
+// CHECK-NEXT:            "loc": {
+// CHECK-NEXT:             "offset": 265,
+// CHECK-NEXT:             "line": 15,
+// CHECK-NEXT:             "col": 10,
+// CHECK-NEXT:             "tokLen": 1
+// CHECK-NEXT:            },
+// CHECK-NEXT:            "range": {
+// CHECK-NEXT:             "begin": {
+// CHECK-NEXT:              "offset": 258,
+// CHECK-NEXT:              "col": 3,
+// CHECK-NEXT:              "tokLen": 6
+// CHECK-NEXT:             },
+// CHECK-NEXT:             "end": {
+// CHECK-NEXT:              "offset": 265,
+// CHECK-NEXT:              "col": 10,
+// CHECK-NEXT:              "tokLen": 1
+// CHECK-NEXT:             }
+// CHECK-NEXT:            },
+// CHECK-NEXT:            "isImplicit": true,
+// CHECK-NEXT:            "name": "S",
+// CHECK-NEXT:            "tagUsed": "struct"
+// CHECK-NEXT:           },
+// CHECK-NEXT:           {
+// CHECK-NEXT:            "id": "0x{{.*}}",
+// CHECK-NEXT:            "kind": "CXXMethodDecl",
+// CHECK-NEXT:            "loc": {
+// CHECK-NEXT:             "offset": 278,
+// CHECK-NEXT:             "line": 16,
+// CHECK-NEXT:             "col": 10,
+// CHECK-NEXT:             "tokLen": 1
+// CHECK-NEXT:            },
+// CHECK-NEXT:            "range": {
+// CHECK-NEXT:             "begin": {
+// CHECK-NEXT:              "offset": 273,
+// CHECK-NEXT:              "col": 5,
+// CHECK-NEXT:              "tokLen": 4
+// CHECK-NEXT:             },
+// CHECK-NEXT:             "end": {
+// CHECK-NEXT:              "offset": 323,
+// CHECK-NEXT:              "line": 19,
+// CHECK-NEXT:              "col": 5,
+// CHECK-NEXT:              "tokLen": 1
+// CHECK-NEXT:             }
+// CHECK-NEXT:            },
+// CHECK-NEXT:            "name": "f",
+// CHECK-NEXT:            "mangledName": "_ZZ4TestvEN1S1fEv",
+// CHECK-NEXT:            "type": {
+// CHECK-NEXT:             "qualType": "void ()"
+// CHECK-NEXT:            },
+// CHECK-NEXT:            "inner": [
+// CHECK-NEXT:             {
+// CHECK-NEXT:              "id": "0x{{.*}}",
+// CHECK-NEXT:              "kind": "CompoundStmt",
+// CHECK-NEXT:              "range": {
+// CHECK-NEXT:               "begin": {
+// CHECK-NEXT:                "offset": 281,
+// CHECK-NEXT:                "line": 16,
+// CHECK-NEXT:                "col": 13,
+// CHECK-NEXT:                "tokLen": 1
+// CHECK-NEXT:               },
+// CHECK-NEXT:               "end": {
+// CHECK-NEXT:                "offset": 323,
+// CHECK-NEXT:                "line": 19,
+// CHECK-NEXT:                "col": 5,
+// CHECK-NEXT:                "tokLen": 1
+// CHECK-NEXT:               }
+// CHECK-NEXT:              },
+// CHECK-NEXT:              "inner": [
+// CHECK-NEXT:               {
+// CHECK-NEXT:                "id": "0x{{.*}}",
+// CHECK-NEXT:                "kind": "LambdaExpr",
+// CHECK-NEXT:                "range": {
+// CHECK-NEXT:                 "begin": {
+// CHECK-NEXT:                  "offset": 289,
+// CHECK-NEXT:                  "line": 17,
+// CHECK-NEXT:                  "col": 7,
+// CHECK-NEXT:                  "tokLen": 1
+// CHECK-NEXT:                 },
+// CHECK-NEXT:                 "end": {
+// CHECK-NEXT:                  "offset": 297,
+// CHECK-NEXT:                  "col": 15,
+// CHECK-NEXT:                  "tokLen": 1
+// CHECK-NEXT:                 }
+// CHECK-NEXT:                },
+// CHECK-NEXT:                "type": {
+// CHECK-NEXT:                 "qualType": "(lambda at {{.*}}:17:7)"
+// CHECK-NEXT:                },
+// CHECK-NEXT:                "valueCategory": "prvalue",
+// CHECK-NEXT:                "hasExplicitParameters": false,
+// CHECK-NEXT:                "inner": [
+// CHECK-NEXT:                 {
+// CHECK-NEXT:                  "id": "0x{{.*}}",
+// CHECK-NEXT:                  "kind": "CXXRecordDecl",
+// CHECK-NEXT:                  "loc": {
+// CHECK-NEXT:                   "offset": 289,
+// CHECK-NEXT:                   "col": 7,
+// CHECK-NEXT:                   "tokLen": 1
+// CHECK-NEXT:                  },
+// CHECK-NEXT:                  "range": {
+// CHECK-NEXT:                   "begin": {
+// CHECK-NEXT:                    "offset": 289,
+// CHECK-NEXT:                    "col": 7,
+// CHECK-NEXT:                    "tokLen": 1
+// CHECK-NEXT:                   },
+// CHECK-NEXT:                   "end": {
+// CHECK-NEXT:                    "offset": 289,
+// CHECK-NEXT:                    "col": 7,
+// CHECK-NEXT:                    "tokLen": 1
+// CHECK-NEXT:                   }
+// CHECK-NEXT:                  },
+// CHECK-NEXT:                  "isImplicit": true,
+// CHECK-NEXT:                  "tagUsed": "class",
+// CHECK-NEXT:                  "completeDefinition": true,
+// CHECK-NEXT:                  "definitionData": {
+// CHECK-NEXT:                   "canConstDefaultInit": true,
+// CHECK-NEXT:                   "canPassInRegisters": true,
+// CHECK-NEXT:                   "copyAssign": {
+// CHECK-NEXT:                    "hasConstParam": true,
+// CHECK-NEXT:                    "implicitHasConstParam": true,
+// CHECK-NEXT:                    "needsImplicit": true,
+// CHECK-NEXT:                    "trivial": true
+// CHECK-NEXT:                   },
+// CHECK-NEXT:                   "copyCtor": {
+// CHECK-NEXT:                    "hasConstParam": true,
+// CHECK-NEXT:                    "implicitHasConstParam": true,
+// CHECK-NEXT:                    "needsImplicit": true,
+// CHECK-NEXT:                    "simple": true,
+// CHECK-NEXT:                    "trivial": true
+// CHECK-NEXT:                   },
+// CHECK-NEXT:                   "defaultCtor": {
+// CHECK-NEXT:                    "defaultedIsConstexpr": true
+// CHECK-NEXT:                   },
+// CHECK-NEXT:                   "dtor": {
+// CHECK-NEXT:                    "irrelevant": true,
+// CHECK-NEXT:                    "simple": true,
+// CHECK-NEXT:                    "trivial": true
+// CHECK-NEXT:                   },
+// CHECK-NEXT:                   "isLambda": true,
+// CHECK-NEXT:                   "isLiteral": true,
+// CHECK-NEXT:                   "isStandardLayout": true,
+// CHECK-NEXT:                   "isTriviallyCopyable": true,
+// CHECK-NEXT:                   "moveAssign": {},
+// CHECK-NEXT:                   "moveCtor": {
+// CHECK-NEXT:                    "exists": true,
+// CHECK-NEXT:                    "needsImplicit": true,
+// CHECK-NEXT:                    "simple": true,
+// CHECK-NEXT:                    "trivial": true
+// CHECK-NEXT:                   }
+// CHECK-NEXT:                  },
+// CHECK-NEXT:                  "inner": [
+// CHECK-NEXT:                   {
+// CHECK-NEXT:                    "id": "0x{{.*}}",
+// CHECK-NEXT:                    "kind": "CXXMethodDecl",
+// CHECK-NEXT:                    "loc": {
+// CHECK-NEXT:                     "offset": 289,
+// CHECK-NEXT:                     "col": 7,
+// CHECK-NEXT:                     "tokLen": 1
+// CHECK-NEXT:                    },
+// CHECK-NEXT:                    "range": {
+// CHECK-NEXT:                     "begin": {
+// CHECK-NEXT:                      "offset": 294,
+// CHECK-NEXT:                      "col": 12,
+// CHECK-NEXT:                      "tokLen": 1
+// CHECK-NEXT:                     },
+// CHECK-NEXT:                     "end": {
+// CHECK-NEXT:                      "offset": 297,
+// CHECK-NEXT:                      "col": 15,
+// CHECK-NEXT:                      "tokLen": 1
+// CHECK-NEXT:                     }
+// CHECK-NEXT:                    },
+// CHECK-NEXT:                    "name": "operator()",
+// CHECK-NEXT:                    "mangledName": "_ZZZ4TestvEN1S1fEvENKUlvE_clEv",
+// CHECK-NEXT:                    "type": {
+// CHECK-NEXT:                     "qualType": "auto () const -> void"
+// CHECK-NEXT:                    },
+// CHECK-NEXT:                    "inline": true,
+// CHECK-NEXT:                    "constexpr": true,
+// CHECK-NEXT:                    "inner": [
+// CHECK-NEXT:                     {
+// CHECK-NEXT:                      "id": "0x{{.*}}",
+// CHECK-NEXT:                      "kind": "CompoundStmt",
+// CHECK-NEXT:                      "range": {
+// CHECK-NEXT:                       "begin": {
+// CHECK-NEXT:                        "offset": 296,
+// CHECK-NEXT:                        "col": 14,
+// CHECK-NEXT:                        "tokLen": 1
+// CHECK-NEXT:                       },
+// CHECK-NEXT:                       "end": {
+// CHECK-NEXT:                        "offset": 297,
+// CHECK-NEXT:                        "col": 15,
+// CHECK-NEXT:                        "tokLen": 1
+// CHECK-NEXT:                       }
+// CHECK-NEXT:                      }
+// CHECK-NEXT:                     }
+// CHECK-NEXT:                    ]
+// CHECK-NEXT:                   },
+// CHECK-NEXT:                   {
+// CHECK-NEXT:                    "id": "0x{{.*}}",
+// CHECK-NEXT:                    "kind": "FieldDecl",
+// CHECK-NEXT:                    "loc": {
+// CHECK-NEXT:                     "offset": 290,
+// CHECK-NEXT:                     "col": 8,
+// CHECK-NEXT:                     "tokLen": 4
+// CHECK-NEXT:                    },
+// CHECK-NEXT:                    "range": {
+// CHECK-NEXT:                     "begin": {
+// CHECK-NEXT:                      "offset": 290,
+// CHECK-NEXT:                      "col": 8,
+// CHECK-NEXT:                      "tokLen": 4
+// CHECK-NEXT:                     },
+// CHECK-NEXT:                     "end": {
+// CHECK-NEXT:                      "offset": 290,
+// CHECK-NEXT:                      "col": 8,
+// CHECK-NEXT:                      "tokLen": 4
+// CHECK-NEXT:                     }
+// CHECK-NEXT:                    },
+// CHECK-NEXT:                    "isImplicit": true,
+// CHECK-NEXT:                    "type": {
+// CHECK-NEXT:                     "qualType": "S *"
+// CHECK-NEXT:                    }
+// CHECK-NEXT:                   },
+// CHECK-NEXT:                   {
+// CHECK-NEXT:                    "id": "0x{{.*}}",
+// CHECK-NEXT:                    "kind": "CXXDestructorDecl",
+// CHECK-NEXT:                    "loc": {
+// CHECK-NEXT:                     "offset": 289,
+// CHECK-NEXT:                     "col": 7,
+// CHECK-NEXT:                     "tokLen": 1
+// CHECK-NEXT:                    },
+// CHECK-NEXT:                    "range": {
+// CHECK-NEXT:                     "begin": {
+// CHECK-NEXT:                      "offset": 289,
+// CHECK-NEXT:                      "col": 7,
+// CHECK-NEXT:                      "tokLen": 1
+// CHECK-NEXT:                     },
+// CHECK-NEXT:                     "end": {
+// CHECK-NEXT:                      "offset": 289,
+// CHECK-NEXT:                      "col": 7,
+// CHECK-NEXT:                      "tokLen": 1
+// CHECK-NEXT:                     }
+// CHECK-NEXT:                    },
+// CHECK-NEXT:                    "isImplicit": true,
+// CHECK-NEXT:                    "isReferenced": true,
+// CHECK-NEXT:                    "name": "~(lambda at {{.*}}:17:7)",
+// CHECK-NEXT:                    "mangledName": "_ZZZ4TestvEN1S1fEvENUlvE_D1Ev",
+// CHECK-NEXT:                    "type": {
+// CHECK-NEXT:                     "qualType": "void () noexcept"
+// CHECK-NEXT:                    },
+// CHECK-NEXT:                    "inline": true,
+// CHECK-NEXT:                    "constexpr": true,
+// CHECK-NEXT:                    "explicitlyDefaulted": "default"
+// CHECK-NEXT:                   }
+// CHECK-NEXT:                  ]
+// CHECK-NEXT:                 },
+// CHECK-NEXT:                 {
+// CHECK-NEXT:                  "id": "0x{{.*}}",
+// CHECK-NEXT:                  "kind": "CXXThisExpr",
+// CHECK-NEXT:                  "range": {
+// CHECK-NEXT:                   "begin": {
+// CHECK-NEXT:                    "offset": 290,
+// CHECK-NEXT:                    "col": 8,
+// CHECK-NEXT:                    "tokLen": 4
+// CHECK-NEXT:                   },
+// CHECK-NEXT:                   "end": {
+// CHECK-NEXT:                    "offset": 290,
+// CHECK-NEXT:                    "col": 8,
+// CHECK-NEXT:                    "tokLen": 4
+// CHECK-NEXT:                   }
+// CHECK-NEXT:                  },
+// CHECK-NEXT:                  "type": {
+// CHECK-NEXT:                   "qualType": "S *"
+// CHECK-NEXT:                  },
+// CHECK-NEXT:                  "valueCategory": "prvalue"
+// CHECK-NEXT:                 },
+// CHECK-NEXT:                 {
+// CHECK-NEXT:                  "id": "0x{{.*}}",
+// CHECK-NEXT:                  "kind": "CompoundStmt",
+// CHECK-NEXT:                  "range": {
+// CHECK-NEXT:                   "begin": {
+// CHECK-NEXT:                    "offset": 296,
+// CHECK-NEXT:                    "col": 14,
+// CHECK-NEXT:                    "tokLen": 1
+// CHECK-NEXT:                   },
+// CHECK-NEXT:                   "end": {
+// CHECK-NEXT:                    "offset": 297,
+// CHECK-NEXT:                    "col": 15,
+// CHECK-NEXT:                    "tokLen": 1
+// CHECK-NEXT:                   }
+// CHECK-NEXT:                  }
+// CHECK-NEXT:                 }
+// CHECK-NEXT:                ]
+// CHECK-NEXT:               },
+// CHECK-NEXT:               {
+// CHECK-NEXT:                "id": "0x{{.*}}",
+// CHECK-NEXT:                "kind": "LambdaExpr",
+// CHECK-NEXT:                "range": {
+// CHECK-NEXT:                 "begin": {
+// CHECK-NEXT:                  "offset": 306,
+// CHECK-NEXT:                  "line": 18,
+// CHECK-NEXT:                  "col": 7,
+// CHECK-NEXT:                  "tokLen": 1
+// CHECK-NEXT:                 },
+// CHECK-NEXT:                 "end": {
+// CHECK-NEXT:                  "offset": 316,
+// CHECK-NEXT:                  "col": 17,
+// CHECK-NEXT:                  "tokLen": 1
+// CHECK-NEXT:                 }
+// CHECK-NEXT:                },
+// CHECK-NEXT:                "type": {
+// CHECK-NEXT:                 "qualType": "(lambda at {{.*}}:18:7)"
+// CHECK-NEXT:                },
+// CHECK-NEXT:                "valueCategory": "prvalue",
+// CHECK-NEXT:                "hasExplicitParameters": true,
+// CHECK-NEXT:                "inner": [
+// CHECK-NEXT:                 {
+// CHECK-NEXT:                  "id": "0x{{.*}}",
+// CHECK-NEXT:                  "kind": "CXXRecordDecl",
+// CHECK-NEXT:                  "loc": {
+// CHECK-NEXT:                   "offset": 306,
+// CHECK-NEXT:                   "col": 7,
+// CHECK-NEXT:                   "tokLen": 1
+// CHECK-NEXT:                  },
+// CHECK-NEXT:                  "range": {
+// CHECK-NEXT:                   "begin": {
+// CHECK-NEXT:                    "offset": 306,
+// CHECK-NEXT:                    "col": 7,
+// CHECK-NEXT:                    "tokLen": 1
+// CHECK-NEXT:                   },
+// CHECK-NEXT:                   "end": {
+// CHECK-NEXT:                    "offset": 306,
+// CHECK-NEXT:                    "col": 7,
+// CHECK-NEXT:                    "tokLen": 1
+// CHECK-NEXT:                   }
+// CHECK-NEXT:                  },
+// CHECK-NEXT:                  "isImplicit": true,
+// CHECK-NEXT:                  "tagUsed": "class",
+// CHECK-NEXT:                  "completeDefinition": true,
+// CHECK-NEXT:                  "definitionData": {
+// CHECK-NEXT:                   "canConstDefaultInit": true,
+// CHECK-NEXT:                   "canPassInRegisters": true,
+// CHECK-NEXT:                   "copyAssign": {
+// CHECK-NEXT:                    "hasConstParam": true,
+// CHECK-NEXT:                    "implicitHasConstParam": true,
+// CHECK-NEXT:                    "needsImplicit": true,
+// CHECK-NEXT:                    "trivial": true
+// CHECK-NEXT:                   },
+// CHECK-NEXT:                   "copyCtor": {
+// CHECK-NEXT:                    "hasConstParam": true,
+// CHECK-NEXT:                    "implicitHasConstParam": true,
+// CHECK-NEXT:                    "needsImplicit": true,
+// CHECK-NEXT:                    "simple": true,
+// CHECK-NEXT:                    "trivial": true
+// CHECK-NEXT:                   },
+// CHECK-NEXT:                   "defaultCtor": {
+// CHECK-NEXT:                    "defaultedIsConstexpr": true
+// CHECK-NEXT:                   },
+// CHECK-NEXT:                   "dtor": {
+// CHECK-NEXT:                    "irrelevant": true,
+// CHECK-NEXT:                    "simple": true,
+// CHECK-NEXT:                    "trivial": true
+// CHECK-NEXT:                   },
+// CHECK-NEXT:                   "isLambda": true,
+// CHECK-NEXT:                   "isLiteral": true,
+// CHECK-NEXT:                   "isStandardLayout": true,
+// CHECK-NEXT:                   "isTriviallyCopyable": true,
+// CHECK-NEXT:                   "moveAssign": {},
+// CHECK-NEXT:                   "moveCtor": {
+// CHECK-NEXT:                    "exists": true,
+// CHECK-NEXT:                    "needsImplicit": true,
+// CHECK-NEXT:                    "simple": true,
+// CHECK-NEXT:                    "trivial": true
+// CHECK-NEXT:                   }
+// CHECK-NEXT:                  },
+// CHECK-NEXT:                  "inner": [
+// CHECK-NEXT:                   {
+// CHECK-NEXT:                    "id": "0x{{.*}}",
+// CHECK-NEXT:                    "kind": "CXXMethodDecl",
+// CHECK-NEXT:                    "loc": {
+// CHECK-NEXT:                     "offset": 306,
+// CHECK-NEXT:                     "col": 7,
+// CHECK-NEXT:                     "tokLen": 1
+// CHECK-NEXT:                    },
+// CHECK-NEXT:                    "range": {
+// CHECK-NEXT:                     "begin": {
+// CHECK-NEXT:                      "offset": 313,
+// CHECK-NEXT:                      "col": 14,
+// CHECK-NEXT:                      "tokLen": 1
+// CHECK-NEXT:                     },
+// CHECK-NEXT:                     "end": {
+// CHECK-NEXT:                      "offset": 316,
+// CHECK-NEXT:                      "col": 17,
+// CHECK-NEXT:                      "tokLen": 1
+// CHECK-NEXT:                     }
+// CHECK-NEXT:                    },
+// CHECK-NEXT:                    "name": "operator()",
+// CHECK-NEXT:                    "mangledName": "_ZZZ4TestvEN1S1fEvENKUlvE0_clEv",
+// CHECK-NEXT:                    "type": {
+// CHECK-NEXT:                     "qualType": "void () const"
+// CHECK-NEXT:                    },
+// CHECK-NEXT:                    "inline": true,
+// CHECK-NEXT:                    "constexpr": true,
+// CHECK-NEXT:                    "inner": [
+// CHECK-NEXT:                     {
+// CHECK-NEXT:                      "id": "0x{{.*}}",
+// CHECK-NEXT:                      "kind": "CompoundStmt",
+// CHECK-NEXT:                      "range": {
+// CHECK-NEXT:                       "begin": {
+// CHECK-NEXT:                        "offset": 315,
+// CHECK-NEXT:                        "col": 16,
+// CHECK-NEXT:                        "tokLen": 1
+// CHECK-NEXT:                       },
+// CHECK-NEXT:                       "end": {
+// CHECK-NEXT:                        "offset": 316,
+// CHECK-NEXT:                        "col": 17,
+// CHECK-NEXT:                        "tokLen": 1
+// CHECK-NEXT:                       }
+// CHECK-NEXT:                      }
+// CHECK-NEXT:                     }
+// CHECK-NEXT:                    ]
+// CHECK-NEXT:                   },
+// CHECK-NEXT:                   {
+// CHECK-NEXT:                    "id": "0x{{.*}}",
+// CHECK-NEXT:                    "kind": "FieldDecl",
+// CHECK-NEXT:                    "loc": {
+// CHECK-NEXT:                     "offset": 307,
+// CHECK-NEXT:                     "col": 8,
+// CHECK-NEXT:                     "tokLen": 4
+// CHECK-NEXT:                    },
+// CHECK-NEXT:                    "range": {
+// CHECK-NEXT:                     "begin": {
+// CHECK-NEXT:                      "offset": 307,
+// CHECK-NEXT:                      "col": 8,
+// CHECK-NEXT:                      "tokLen": 4
+// CHECK-NEXT:                     },
+// CHECK-NEXT:                     "end": {
+// CHECK-NEXT:                      "offset": 307,
+// CHECK-NEXT:                      "col": 8,
+// CHECK-NEXT:                      "tokLen": 4
+// CHECK-NEXT:                     }
+// CHECK-NEXT:                    },
+// CHECK-NEXT:                    "isImplicit": true,
+// CHECK-NEXT:                    "type": {
+// CHECK-NEXT:                     "qualType": "S *"
+// CHECK-NEXT:                    }
+// CHECK-NEXT:                   },
+// CHECK-NEXT:                   {
+// CHECK-NEXT:                    "id": "0x{{.*}}",
+// CHECK-NEXT:                    "kind": "CXXDestructorDecl",
+// CHECK-NEXT:                    "loc": {
+// CHECK-NEXT:                     "offset": 306,
+// CHECK-NEXT:                     "col": 7,
+// CHECK-NEXT:                     "tokLen": 1
+// CHECK-NEXT:                    },
+// CHECK-NEXT:                    "range": {
+// CHECK-NEXT:                     "begin": {
+// CHECK-NEXT:                      "offset": 306,
+// CHECK-NEXT:                      "col": 7,
+// CHECK-NEXT:                      "tokLen": 1
+// CHECK-NEXT:                     },
+// CHECK-NEXT:                     "end": {
+// CHECK-NEXT:                      "offset": 306,
+// CHECK-NEXT:                      "col": 7,
+// CHECK-NEXT:                      "tokLen": 1
+// CHECK-NEXT:                     }
+// CHECK-NEXT:                    },
+// CHECK-NEXT:                    "isImplicit": true,
+// CHECK-NEXT:                    "isReferenced": true,
+// CHECK-NEXT:                    "name": "~(lambda at {{.*}}:18:7)",
+// CHECK-NEXT:                    "mangledName": "_ZZZ4TestvEN1S1fEvENUlvE0_D1Ev",
+// CHECK-NEXT:                    "type": {
+// CHECK-NEXT:                     "qualType": "void () noexcept"
+// CHECK-NEXT:                    },
+// CHECK-NEXT:                    "inline": true,
+// CHECK-NEXT:                    "constexpr": true,
+// CHECK-NEXT:                    "explicitlyDefaulted": "default"
+// CHECK-NEXT:                   }
+// CHECK-NEXT:                  ]
+// CHECK-NEXT:                 },
+// CHECK-NEXT:                 {
+// CHECK-NEXT:                  "id": "0x{{.*}}",
+// CHECK-NEXT:                  "kind": "CXXThisExpr",
+// CHECK-NEXT:                  "range": {
+// CHECK-NEXT:                   "begin": {
+// CHECK-NEXT:                    "offset": 307,
+// CHECK-NEXT:                    "col": 8,
+// CHECK-NEXT:                    "tokLen": 4
+// CHECK-NEXT:                   },
+// CHECK-NEXT:                   "end": {
+// CHECK-NEXT:                    "offset": 307,
+// CHECK-NEXT:                    "col": 8,
+// CHECK-NEXT:                    "tokLen": 4
+// CHECK-NEXT:                   }
+// CHECK-NEXT:                  },
+// CHECK-NEXT:                  "type": {
+// CHECK-NEXT:                   "qualType": "S *"
+// CHECK-NEXT:                  },
+// CHECK-NEXT:                  "valueCategory": "prvalue"
+// CHECK-NEXT:                 },
+// CHECK-NEXT:                 {
+// CHECK-NEXT:                  "id": "0x{{.*}}",
+// CHECK-NEXT:                  "kind": "CompoundStmt",
+// CHECK-NEXT:                  "range": {
+// CHECK-NEXT:                   "begin": {
+// CHECK-NEXT:                    "offset": 315,
+// CHECK-NEXT:                    "col": 16,
+// CHECK-NEXT:                    "tokLen": 1
+// CHECK-NEXT:                   },
+// CHECK-NEXT:                   "end": {
+// CHECK-NEXT:                    "offset": 316,
+// CHECK-NEXT:                    "col": 17,
+// CHECK-NEXT:                    "tokLen": 1
+// CHECK-NEXT:                   }
+// CHECK-NEXT:                  }
+// CHECK-NEXT:                 }
+// CHECK-NEXT:                ]
+// CHECK-NEXT:               }
+// CHECK-NEXT:              ]
+// CHECK-NEXT:             }
+// CHECK-NEXT:            ]
+// CHECK-NEXT:           }
+// CHECK-NEXT:          ]
+// CHECK-NEXT:         }
+// CHECK-NEXT:        ]
+// CHECK-NEXT:       },
+// CHECK-NEXT:       {
+// CHECK-NEXT:        "id": "0x{{.*}}",
+// CHECK-NEXT:        "kind": "LambdaExpr",
+// CHECK-NEXT:        "range": {
+// CHECK-NEXT:         "begin": {
+// CHECK-NEXT:          "offset": 332,
+// CHECK-NEXT:          "line": 21,
+// CHECK-NEXT:          "col": 3,
+// CHECK-NEXT:          "tokLen": 1
+// CHECK-NEXT:         },
+// CHECK-NEXT:         "end": {
+// CHECK-NEXT:          "offset": 341,
+// CHECK-NEXT:          "col": 12,
+// CHECK-NEXT:          "tokLen": 1
+// CHECK-NEXT:         }
+// CHECK-NEXT:        },
+// CHECK-NEXT:        "type": {
+// CHECK-NEXT:         "qualType": "(lambda at {{.*}}:21:3)"
+// CHECK-NEXT:        },
+// CHECK-NEXT:        "valueCategory": "prvalue",
+// CHECK-NEXT:        "hasExplicitParameters": true,
+// CHECK-NEXT:        "inner": [
+// CHECK-NEXT:         {
+// CHECK-NEXT:          "id": "0x{{.*}}",
+// CHECK-NEXT:          "kind": "CXXRecordDecl",
+// CHECK-NEXT:          "loc": {
+// CHECK-NEXT:           "offset": 332,
+// CHECK-NEXT:           "col": 3,
+// CHECK-NEXT:           "tokLen": 1
+// CHECK-NEXT:          },
+// CHECK-NEXT:          "range": {
+// CHECK-NEXT:           "begin": {
+// CHECK-NEXT:            "offset": 332,
+// CHECK-NEXT:            "col": 3,
+// CHECK-NEXT:            "tokLen": 1
+// CHECK-NEXT:           },
+// CHECK-NEXT:           "end": {
+// CHECK-NEXT:            "offset": 332,
+// CHECK-NEXT:            "col": 3,
+// CHECK-NEXT:            "tokLen": 1
+// CHECK-NEXT:           }
+// CHECK-NEXT:          },
+// CHECK-NEXT:          "isImplicit": true,
+// CHECK-NEXT:          "tagUsed": "class",
+// CHECK-NEXT:          "completeDefinition": true,
+// CHECK-NEXT:          "definitionData": {
+// CHECK-NEXT:           "canConstDefaultInit": true,
+// CHECK-NEXT:           "canPassInRegisters": true,
+// CHECK-NEXT:           "copyAssign": {
+// CHECK-NEXT:            "hasConstParam": true,
+// CHECK-NEXT:            "implicitHasConstParam": true,
+// CHECK-NEXT:            "needsImplicit": true,
+// CHECK-NEXT:            "simple": true,
+// CHECK-NEXT:            "trivial": true
+// CHECK-NEXT:           },
+// CHECK-NEXT:           "copyCtor": {
+// CHECK-NEXT:            "hasConstParam": true,
+// CHECK-NEXT:            "implicitHasConstParam": true,
+// CHECK-NEXT:            "needsImplicit": true,
+// CHECK-NEXT:            "simple": true,
+// CHECK-NEXT:            "trivial": true
+// CHECK-NEXT:           },
+// CHECK-NEXT:           "defaultCtor": {
+// CHECK-NEXT:            "defaultedIsConstexpr": true,
+// CHECK-NEXT:            "exists": true,
+// CHECK-NEXT:            "isConstexpr": true,
+// CHECK-NEXT:            "needsImplicit": true,
+// CHECK-NEXT:            "trivial": true
+// CHECK-NEXT:           },
+// CHECK-NEXT:           "dtor": {
+// CHECK-NEXT:            "irrelevant": true,
+// CHECK-NEXT:            "simple": true,
+// CHECK-NEXT:            "trivial": true
+// CHECK-NEXT:           },
+// CHECK-NEXT:           "hasConstexprNonCopyMoveConstructor": true,
+// CHECK-NEXT:           "isEmpty": true,
+// CHECK-NEXT:           "isLambda": true,
+// CHECK-NEXT:           "isLiteral": true,
+// CHECK-NEXT:           "isStandardLayout": true,
+// CHECK-NEXT:           "isTrivial": true,
+// CHECK-NEXT:           "isTriviallyCopyable": true,
+// CHECK-NEXT:           "moveAssign": {
+// CHECK-NEXT:            "exists": true,
+// CHECK-NEXT:            "needsImplicit": true,
+// CHECK-NEXT:            "simple": true,
+// CHECK-NEXT:            "trivial": true
+// CHECK-NEXT:           },
+// CHECK-NEXT:           "moveCtor": {
+// CHECK-NEXT:            "exists": true,
+// CHECK-NEXT:            "needsImplicit": true,
+// CHECK-NEXT:            "simple": true,
+// CHECK-NEXT:            "trivial": true
+// CHECK-NEXT:           }
+// CHECK-NEXT:          },
+// CHECK-NEXT:          "inner": [
+// CHECK-NEXT:           {
+// CHECK-NEXT:            "id": "0x{{.*}}",
+// CHECK-NEXT:            "kind": "CXXMethodDecl",
+// CHECK-NEXT:            "loc": {
+// CHECK-NEXT:             "offset": 332,
+// CHECK-NEXT:             "col": 3,
+// CHECK-NEXT:             "tokLen": 1
+// CHECK-NEXT:            },
+// CHECK-NEXT:            "range": {
+// CHECK-NEXT:             "begin": {
+// CHECK-NEXT:              "offset": 339,
+// CHECK-NEXT:              "col": 10,
+// CHECK-NEXT:              "tokLen": 1
+// CHECK-NEXT:             },
+// CHECK-NEXT:             "end": {
+// CHECK-NEXT:              "offset": 341,
+// CHECK-NEXT:              "col": 12,
+// CHECK-NEXT:              "tokLen": 1
+// CHECK-NEXT:             }
+// CHECK-NEXT:            },
+// CHECK-NEXT:            "name": "operator()",
+// CHECK-NEXT:            "mangledName": "_ZZ4TestvENK3$_7clEv",
+// CHECK-NEXT:            "type": {
+// CHECK-NEXT:             "qualType": "void () const"
+// CHECK-NEXT:            },
+// CHECK-NEXT:            "inline": true,
+// CHECK-NEXT:            "constexpr": true,
+// CHECK-NEXT:            "inner": [
+// CHECK-NEXT:             {
+// CHECK-NEXT:              "id": "0x{{.*}}",
+// CHECK-NEXT:              "kind": "CompoundStmt",
+// CHECK-NEXT:              "range": {
+// CHECK-NEXT:               "begin": {
+// CHECK-NEXT:                "offset": 340,
+// CHECK-NEXT:                "col": 11,
+// CHECK-NEXT:                "tokLen": 1
+// CHECK-NEXT:               },
+// CHECK-NEXT:               "end": {
+// CHECK-NEXT:                "offset": 341,
+// CHECK-NEXT:                "col": 12,
+// CHECK-NEXT:                "tokLen": 1
+// CHECK-NEXT:               }
+// CHECK-NEXT:              }
+// CHECK-NEXT:             }
+// CHECK-NEXT:            ]
+// CHECK-NEXT:           },
+// CHECK-NEXT:           {
+// CHECK-NEXT:            "id": "0x{{.*}}",
+// CHECK-NEXT:            "kind": "CXXConversionDecl",
+// CHECK-NEXT:            "loc": {
+// CHECK-NEXT:             "offset": 332,
+// CHECK-NEXT:             "col": 3,
+// CHECK-NEXT:             "tokLen": 1
+// CHECK-NEXT:            },
+// CHECK-NEXT:            "range": {
+// CHECK-NEXT:             "begin": {
+// CHECK-NEXT:              "offset": 332,
+// CHECK-NEXT:              "col": 3,
+// CHECK-NEXT:              "tokLen": 1
+// CHECK-NEXT:             },
+// CHECK-NEXT:             "end": {
+// CHECK-NEXT:              "offset": 341,
+// CHECK-NEXT:              "col": 12,
+// CHECK-NEXT:              "tokLen": 1
+// CHECK-NEXT:             }
+// CHECK-NEXT:            },
+// CHECK-NEXT:            "isImplicit": true,
+// CHECK-NEXT:            "name": "operator void (*)()",
+// CHECK-NEXT:            "mangledName": "_ZZ4TestvENK3$_7cvPFvvEEv",
+// CHECK-NEXT:            "type": {
+// CHECK-NEXT:             "qualType": "void (*() const noexcept)()"
+// CHECK-NEXT:            },
+// CHECK-NEXT:            "inline": true,
+// CHECK-NEXT:            "constexpr": true
+// CHECK-NEXT:           },
+// CHECK-NEXT:           {
+// CHECK-NEXT:            "id": "0x{{.*}}",
+// CHECK-NEXT:            "kind": "CXXMethodDecl",
+// CHECK-NEXT:            "loc": {
+// CHECK-NEXT:             "offset": 332,
+// CHECK-NEXT:             "col": 3,
+// CHECK-NEXT:             "tokLen": 1
+// CHECK-NEXT:            },
+// CHECK-NEXT:            "range": {
+// CHECK-NEXT:             "begin": {
+// CHECK-NEXT:              "offset": 332,
+// CHECK-NEXT:              "col": 3,
+// CHECK-NEXT:              "tokLen": 1
+// CHECK-NEXT:             },
+// CHECK-NEXT:             "end": {
+// CHECK-NEXT:              "offset": 341,
+// CHECK-NEXT:              "col": 12,
+// CHECK-NEXT:              "tokLen": 1
+// CHECK-NEXT:             }
+// CHECK-NEXT:            },
+// CHECK-NEXT:            "isImplicit": true,
+// CHECK-NEXT:            "name": "__invoke",
+// CHECK-NEXT:            "mangledName": "_ZZ4TestvEN3$_78__invokeEv",
+// CHECK-NEXT:            "type": {
+// CHECK-NEXT:             "qualType": "void ()"
+// CHECK-NEXT:            },
+// CHECK-NEXT:            "storageClass": "static",
+// CHECK-NEXT:            "inline": true
+// CHECK-NEXT:           },
+// CHECK-NEXT:           {
+// CHECK-NEXT:            "id": "0x{{.*}}",
+// CHECK-NEXT:            "kind": "CXXDestructorDecl",
+// CHECK-NEXT:            "loc": {
+// CHECK-NEXT:             "offset": 332,
+// CHECK-NEXT:             "col": 3,
+// CHECK-NEXT:             "tokLen": 1
+// CHECK-NEXT:            },
+// CHECK-NEXT:            "range": {
+// CHECK-NEXT:             "begin": {
+// CHECK-NEXT:              "offset": 332,
+// CHECK-NEXT:              "col": 3,
+// CHECK-NEXT:              "tokLen": 1
+// CHECK-NEXT:             },
+// CHECK-NEXT:             "end": {
+// CHECK-NEXT:              "offset": 332,
+// CHECK-NEXT:              "col": 3,
+// CHECK-NEXT:              "tokLen": 1
+// CHECK-NEXT:             }
+// CHECK-NEXT:            },
+// CHECK-NEXT:            "isImplicit": true,
+// CHECK-NEXT:            "isReferenced": true,
+// CHECK-NEXT:            "name": "~(lambda at {{.*}}:21:3)",
+// CHECK-NEXT:            "mangledName": "_ZZ4TestvEN3$_7D1Ev",
+// CHECK-NEXT:            "type": {
+// CHECK-NEXT:             "qualType": "void () noexcept"
+// CHECK-NEXT:            },
+// CHECK-NEXT:            "inline": true,
+// CHECK-NEXT:            "constexpr": true,
+// CHECK-NEXT:            "explicitlyDefaulted": "default"
+// CHECK-NEXT:           }
+// CHECK-NEXT:          ]
+// CHECK-NEXT:         },
+// CHECK-NEXT:         {
+// CHECK-NEXT:          "id": "0x{{.*}}",
+// CHECK-NEXT:          "kind": "CompoundStmt",
+// CHECK-NEXT:          "range": {
+// CHECK-NEXT:           "begin": {
+// CHECK-NEXT:            "offset": 340,
+// CHECK-NEXT:            "col": 11,
+// CHECK-NEXT:            "tokLen": 1
+// CHECK-NEXT:           },
+// CHECK-NEXT:           "end": {
+// CHECK-NEXT:            "offset": 341,
+// CHECK-NEXT:            "col": 12,
+// CHECK-NEXT:            "tokLen": 1
+// CHECK-NEXT:           }
+// CHECK-NEXT:          }
+// CHECK-NEXT:         }
+// CHECK-NEXT:        ]
+// CHECK-NEXT:       }
+// CHECK-NEXT:      ]
+// CHECK-NEXT:     }
+// CHECK-NEXT:    ]
+// CHECK-NEXT:   },
+// CHECK-NEXT:   {
+// CHECK-NEXT:    "id": "0x{{.*}}",
+// CHECK-NEXT:    "kind": "EmptyDecl",
+// CHECK-NEXT:    "loc": {
+// CHECK-NEXT:     "offset": 345,
+// CHECK-NEXT:     "line": 22,
+// CHECK-NEXT:     "col": 2,
+// CHECK-NEXT:     "tokLen": 1
+// CHECK-NEXT:    },
+// CHECK-NEXT:    "range": {
+// CHECK-NEXT:     "begin": {
+// CHECK-NEXT:      "offset": 345,
+// CHECK-NEXT:      "col": 2,
+// CHECK-NEXT:      "tokLen": 1
+// CHECK-NEXT:     },
+// CHECK-NEXT:     "end": {
+// CHECK-NEXT:      "offset": 345,
+// CHECK-NEXT:      "col": 2,
+// CHECK-NEXT:      "tokLen": 1
+// CHECK-NEXT:     }
+// CHECK-NEXT:    }
+// CHECK-NEXT:   }
+// CHECK-NEXT:  ]
+// CHECK-NEXT: }



More information about the cfe-commits mailing list