[llvm-branch-commits] [clang] 0f37d18 - Revert "[clang] fix P3310 overload resolution flag propagation (#125372)"
via llvm-branch-commits
llvm-branch-commits at lists.llvm.org
Tue Feb 4 08:22:16 PST 2025
Author: David Spickett
Date: 2025-02-04T16:22:11Z
New Revision: 0f37d1852be9e68a1ec64414deca2704efba8184
URL: https://github.com/llvm/llvm-project/commit/0f37d1852be9e68a1ec64414deca2704efba8184
DIFF: https://github.com/llvm/llvm-project/commit/0f37d1852be9e68a1ec64414deca2704efba8184.diff
LOG: Revert "[clang] fix P3310 overload resolution flag propagation (#125372)"
This reverts commit f4958723b2c1aac32739bfff447a73c2cd3e2c06.
Added:
Modified:
clang/include/clang/AST/DeclTemplate.h
clang/include/clang/Sema/Sema.h
clang/lib/AST/ASTImporter.cpp
clang/lib/AST/DeclTemplate.cpp
clang/lib/AST/JSONNodeDumper.cpp
clang/lib/AST/TextNodeDumper.cpp
clang/lib/Sema/SemaTemplate.cpp
clang/lib/Sema/SemaTemplateDeduction.cpp
clang/lib/Sema/SemaTemplateInstantiateDecl.cpp
clang/lib/Sema/SemaType.cpp
clang/lib/Serialization/ASTReaderDecl.cpp
clang/lib/Serialization/ASTWriterDecl.cpp
clang/test/AST/ast-dump-templates.cpp
clang/test/AST/gen_ast_dump_json_test.py
clang/test/SemaTemplate/cwg2398.cpp
Removed:
################################################################################
diff --git a/clang/include/clang/AST/DeclTemplate.h b/clang/include/clang/AST/DeclTemplate.h
index 03c43765206b183..9ecff2c898acd5f 100644
--- a/clang/include/clang/AST/DeclTemplate.h
+++ b/clang/include/clang/AST/DeclTemplate.h
@@ -1841,23 +1841,15 @@ class ClassTemplateSpecializationDecl : public CXXRecordDecl,
LLVM_PREFERRED_TYPE(TemplateSpecializationKind)
unsigned SpecializationKind : 3;
- /// Indicate that we have matched a parameter pack with a non pack
- /// argument, when the opposite match is also allowed (strict pack match).
- /// This needs to be cached as deduction is performed during declaration,
- /// and we need the information to be preserved so that it is consistent
- /// during instantiation.
- bool MatchedPackOnParmToNonPackOnArg : 1;
-
protected:
ClassTemplateSpecializationDecl(ASTContext &Context, Kind DK, TagKind TK,
DeclContext *DC, SourceLocation StartLoc,
SourceLocation IdLoc,
ClassTemplateDecl *SpecializedTemplate,
ArrayRef<TemplateArgument> Args,
- bool MatchedPackOnParmToNonPackOnArg,
ClassTemplateSpecializationDecl *PrevDecl);
- ClassTemplateSpecializationDecl(ASTContext &C, Kind DK);
+ explicit ClassTemplateSpecializationDecl(ASTContext &C, Kind DK);
public:
friend class ASTDeclReader;
@@ -1867,7 +1859,7 @@ class ClassTemplateSpecializationDecl : public CXXRecordDecl,
Create(ASTContext &Context, TagKind TK, DeclContext *DC,
SourceLocation StartLoc, SourceLocation IdLoc,
ClassTemplateDecl *SpecializedTemplate,
- ArrayRef<TemplateArgument> Args, bool MatchedPackOnParmToNonPackOnArg,
+ ArrayRef<TemplateArgument> Args,
ClassTemplateSpecializationDecl *PrevDecl);
static ClassTemplateSpecializationDecl *CreateDeserialized(ASTContext &C,
GlobalDeclID ID);
@@ -1938,10 +1930,6 @@ class ClassTemplateSpecializationDecl : public CXXRecordDecl,
SpecializationKind = TSK;
}
- bool hasMatchedPackOnParmToNonPackOnArg() const {
- return MatchedPackOnParmToNonPackOnArg;
- }
-
/// Get the point of instantiation (if any), or null if none.
SourceLocation getPointOfInstantiation() const {
return PointOfInstantiation;
diff --git a/clang/include/clang/Sema/Sema.h b/clang/include/clang/Sema/Sema.h
index 4573a7ab336d4d5..59e29262e350475 100644
--- a/clang/include/clang/Sema/Sema.h
+++ b/clang/include/clang/Sema/Sema.h
@@ -13499,8 +13499,8 @@ class Sema final : public SemaBase {
bool InstantiateClassTemplateSpecialization(
SourceLocation PointOfInstantiation,
ClassTemplateSpecializationDecl *ClassTemplateSpec,
- TemplateSpecializationKind TSK, bool Complain,
- bool PrimaryHasMatchedPackOnParmToNonPackOnArg);
+ TemplateSpecializationKind TSK, bool Complain = true,
+ bool PrimaryHasMatchedPackOnParmToNonPackOnArg = false);
/// Instantiates the definitions of all of the member
/// of the given class, which is an instantiation of a class template
diff --git a/clang/lib/AST/ASTImporter.cpp b/clang/lib/AST/ASTImporter.cpp
index 1057f09deda073e..c9f2f905d2134c1 100644
--- a/clang/lib/AST/ASTImporter.cpp
+++ b/clang/lib/AST/ASTImporter.cpp
@@ -6321,9 +6321,9 @@ ExpectedDecl ASTNodeImporter::VisitClassTemplateSpecializationDecl(
updateLookupTableForTemplateParameters(*ToTPList);
} else { // Not a partial specialization.
if (GetImportedOrCreateDecl(
- D2, D, Importer.getToContext(), D->getTagKind(), DC, *BeginLocOrErr,
- *IdLocOrErr, ClassTemplate, TemplateArgs,
- D->hasMatchedPackOnParmToNonPackOnArg(), PrevDecl))
+ D2, D, Importer.getToContext(), D->getTagKind(), DC,
+ *BeginLocOrErr, *IdLocOrErr, ClassTemplate, TemplateArgs,
+ PrevDecl))
return D2;
// Update InsertPos, because preceding import calls may have invalidated
diff --git a/clang/lib/AST/DeclTemplate.cpp b/clang/lib/AST/DeclTemplate.cpp
index fe8734d262a961c..2e1ed9e10713a8b 100644
--- a/clang/lib/AST/DeclTemplate.cpp
+++ b/clang/lib/AST/DeclTemplate.cpp
@@ -957,20 +957,18 @@ FunctionTemplateSpecializationInfo *FunctionTemplateSpecializationInfo::Create(
// ClassTemplateSpecializationDecl Implementation
//===----------------------------------------------------------------------===//
-ClassTemplateSpecializationDecl::ClassTemplateSpecializationDecl(
- ASTContext &Context, Kind DK, TagKind TK, DeclContext *DC,
- SourceLocation StartLoc, SourceLocation IdLoc,
- ClassTemplateDecl *SpecializedTemplate, ArrayRef<TemplateArgument> Args,
- bool MatchedPackOnParmToNonPackOnArg,
- ClassTemplateSpecializationDecl *PrevDecl)
+ClassTemplateSpecializationDecl::
+ClassTemplateSpecializationDecl(ASTContext &Context, Kind DK, TagKind TK,
+ DeclContext *DC, SourceLocation StartLoc,
+ SourceLocation IdLoc,
+ ClassTemplateDecl *SpecializedTemplate,
+ ArrayRef<TemplateArgument> Args,
+ ClassTemplateSpecializationDecl *PrevDecl)
: CXXRecordDecl(DK, TK, Context, DC, StartLoc, IdLoc,
SpecializedTemplate->getIdentifier(), PrevDecl),
- SpecializedTemplate(SpecializedTemplate),
- TemplateArgs(TemplateArgumentList::CreateCopy(Context, Args)),
- SpecializationKind(TSK_Undeclared),
- MatchedPackOnParmToNonPackOnArg(MatchedPackOnParmToNonPackOnArg) {
- assert(DK == Kind::ClassTemplateSpecialization ||
- MatchedPackOnParmToNonPackOnArg == false);
+ SpecializedTemplate(SpecializedTemplate),
+ TemplateArgs(TemplateArgumentList::CreateCopy(Context, Args)),
+ SpecializationKind(TSK_Undeclared) {
}
ClassTemplateSpecializationDecl::ClassTemplateSpecializationDecl(ASTContext &C,
@@ -979,14 +977,18 @@ ClassTemplateSpecializationDecl::ClassTemplateSpecializationDecl(ASTContext &C,
SourceLocation(), nullptr, nullptr),
SpecializationKind(TSK_Undeclared) {}
-ClassTemplateSpecializationDecl *ClassTemplateSpecializationDecl::Create(
- ASTContext &Context, TagKind TK, DeclContext *DC, SourceLocation StartLoc,
- SourceLocation IdLoc, ClassTemplateDecl *SpecializedTemplate,
- ArrayRef<TemplateArgument> Args, bool MatchedPackOnParmToNonPackOnArg,
- ClassTemplateSpecializationDecl *PrevDecl) {
- auto *Result = new (Context, DC) ClassTemplateSpecializationDecl(
- Context, ClassTemplateSpecialization, TK, DC, StartLoc, IdLoc,
- SpecializedTemplate, Args, MatchedPackOnParmToNonPackOnArg, PrevDecl);
+ClassTemplateSpecializationDecl *
+ClassTemplateSpecializationDecl::Create(ASTContext &Context, TagKind TK,
+ DeclContext *DC,
+ SourceLocation StartLoc,
+ SourceLocation IdLoc,
+ ClassTemplateDecl *SpecializedTemplate,
+ ArrayRef<TemplateArgument> Args,
+ ClassTemplateSpecializationDecl *PrevDecl) {
+ auto *Result =
+ new (Context, DC) ClassTemplateSpecializationDecl(
+ Context, ClassTemplateSpecialization, TK, DC, StartLoc, IdLoc,
+ SpecializedTemplate, Args, PrevDecl);
Result->setMayHaveOutOfDateDef(false);
// If the template decl is incomplete, copy the external lexical storage from
@@ -1173,10 +1175,7 @@ ClassTemplatePartialSpecializationDecl::ClassTemplatePartialSpecializationDecl(
ClassTemplatePartialSpecializationDecl *PrevDecl)
: ClassTemplateSpecializationDecl(
Context, ClassTemplatePartialSpecialization, TK, DC, StartLoc, IdLoc,
- // Tracking MatchedPackOnParmToNonPackOnArg for Partial
- // Specializations is not needed.
- SpecializedTemplate, Args, /*MatchedPackOnParmToNonPackOnArg=*/false,
- PrevDecl),
+ SpecializedTemplate, Args, PrevDecl),
TemplateParams(Params), InstantiatedFromMember(nullptr, false) {
if (AdoptTemplateParameterList(Params, this))
setInvalidDecl();
diff --git a/clang/lib/AST/JSONNodeDumper.cpp b/clang/lib/AST/JSONNodeDumper.cpp
index 4ab0e7cb5815b62..36ef1fc8c79db09 100644
--- a/clang/lib/AST/JSONNodeDumper.cpp
+++ b/clang/lib/AST/JSONNodeDumper.cpp
@@ -1003,11 +1003,6 @@ void JSONNodeDumper::VisitRecordDecl(const RecordDecl *RD) {
void JSONNodeDumper::VisitCXXRecordDecl(const CXXRecordDecl *RD) {
VisitRecordDecl(RD);
- if (const auto *CTSD = dyn_cast<ClassTemplateSpecializationDecl>(RD)) {
- if (CTSD->hasMatchedPackOnParmToNonPackOnArg())
- JOS.attribute("strict-pack-match", true);
- }
-
// All other information requires a complete definition.
if (!RD->isCompleteDefinition())
return;
diff --git a/clang/lib/AST/TextNodeDumper.cpp b/clang/lib/AST/TextNodeDumper.cpp
index 320ff803a659cd4..10d7e4c0c738721 100644
--- a/clang/lib/AST/TextNodeDumper.cpp
+++ b/clang/lib/AST/TextNodeDumper.cpp
@@ -2525,11 +2525,8 @@ void TextNodeDumper::VisitCXXRecordDecl(const CXXRecordDecl *D) {
OS << " instantiated_from";
dumpPointer(Instance);
}
- if (const auto *CTSD = dyn_cast<ClassTemplateSpecializationDecl>(D)) {
+ if (const auto *CTSD = dyn_cast<ClassTemplateSpecializationDecl>(D))
dumpTemplateSpecializationKind(CTSD->getSpecializationKind());
- if (CTSD->hasMatchedPackOnParmToNonPackOnArg())
- OS << " strict-pack-match";
- }
dumpNestedNameSpecifier(D->getQualifier());
diff --git a/clang/lib/Sema/SemaTemplate.cpp b/clang/lib/Sema/SemaTemplate.cpp
index f180be2c1a5e15f..35ece88c603ddd2 100644
--- a/clang/lib/Sema/SemaTemplate.cpp
+++ b/clang/lib/Sema/SemaTemplate.cpp
@@ -3651,7 +3651,7 @@ QualType Sema::CheckTemplateIdType(TemplateName Name,
ClassTemplate->getDeclContext(),
ClassTemplate->getTemplatedDecl()->getBeginLoc(),
ClassTemplate->getLocation(), ClassTemplate, CTAI.CanonicalConverted,
- CTAI.MatchedPackOnParmToNonPackOnArg, nullptr);
+ nullptr);
ClassTemplate->AddSpecialization(Decl, InsertPos);
if (ClassTemplate->isOutOfLine())
Decl->setLexicalDeclContext(ClassTemplate->getLexicalDeclContext());
@@ -8526,8 +8526,7 @@ DeclResult Sema::ActOnClassTemplateSpecialization(
// this explicit specialization or friend declaration.
Specialization = ClassTemplateSpecializationDecl::Create(
Context, Kind, DC, KWLoc, TemplateNameLoc, ClassTemplate,
- CTAI.CanonicalConverted, CTAI.MatchedPackOnParmToNonPackOnArg,
- PrevDecl);
+ CTAI.CanonicalConverted, PrevDecl);
Specialization->setTemplateArgsAsWritten(TemplateArgs);
SetNestedNameSpecifier(*this, Specialization, SS);
if (TemplateParameterLists.size() > 0) {
@@ -9870,8 +9869,7 @@ DeclResult Sema::ActOnExplicitInstantiation(
// this explicit specialization.
Specialization = ClassTemplateSpecializationDecl::Create(
Context, Kind, ClassTemplate->getDeclContext(), KWLoc, TemplateNameLoc,
- ClassTemplate, CTAI.CanonicalConverted,
- CTAI.MatchedPackOnParmToNonPackOnArg, PrevDecl);
+ ClassTemplate, CTAI.CanonicalConverted, PrevDecl);
SetNestedNameSpecifier(*this, Specialization, SS);
// A MSInheritanceAttr attached to the previous declaration must be
diff --git a/clang/lib/Sema/SemaTemplateDeduction.cpp b/clang/lib/Sema/SemaTemplateDeduction.cpp
index 425c41f0f623675..137942f0c30bfe1 100644
--- a/clang/lib/Sema/SemaTemplateDeduction.cpp
+++ b/clang/lib/Sema/SemaTemplateDeduction.cpp
@@ -3341,6 +3341,8 @@ FinishTemplateArgumentDeduction(
return ConstraintsNotSatisfied
? TemplateDeductionResult::ConstraintsNotSatisfied
: TemplateDeductionResult::SubstitutionFailure;
+ if (InstCTAI.MatchedPackOnParmToNonPackOnArg)
+ Info.setMatchedPackOnParmToNonPackOnArg();
TemplateParameterList *TemplateParams = Template->getTemplateParameters();
for (unsigned I = 0, E = TemplateParams->size(); I != E; ++I) {
diff --git a/clang/lib/Sema/SemaTemplateInstantiateDecl.cpp b/clang/lib/Sema/SemaTemplateInstantiateDecl.cpp
index 31611695eba7e4b..4855e8a23689cef 100644
--- a/clang/lib/Sema/SemaTemplateInstantiateDecl.cpp
+++ b/clang/lib/Sema/SemaTemplateInstantiateDecl.cpp
@@ -4038,7 +4038,7 @@ TemplateDeclInstantiator::VisitClassTemplateSpecializationDecl(
ClassTemplateSpecializationDecl::Create(
SemaRef.Context, D->getTagKind(), Owner, D->getBeginLoc(),
D->getLocation(), InstClassTemplate, CTAI.CanonicalConverted,
- CTAI.MatchedPackOnParmToNonPackOnArg, PrevDecl);
+ PrevDecl);
InstD->setTemplateArgsAsWritten(InstTemplateArgs);
// Add this partial specialization to the set of class template partial
diff --git a/clang/lib/Sema/SemaType.cpp b/clang/lib/Sema/SemaType.cpp
index 77b52b832d77132..1fa5239a597c88f 100644
--- a/clang/lib/Sema/SemaType.cpp
+++ b/clang/lib/Sema/SemaType.cpp
@@ -9399,8 +9399,7 @@ bool Sema::RequireCompleteTypeImpl(SourceLocation Loc, QualType T,
runWithSufficientStackSpace(Loc, [&] {
Diagnosed = InstantiateClassTemplateSpecialization(
Loc, ClassTemplateSpec, TSK_ImplicitInstantiation,
- /*Complain=*/Diagnoser,
- ClassTemplateSpec->hasMatchedPackOnParmToNonPackOnArg());
+ /*Complain=*/Diagnoser);
});
Instantiated = true;
}
diff --git a/clang/lib/Serialization/ASTReaderDecl.cpp b/clang/lib/Serialization/ASTReaderDecl.cpp
index 963122160ff4d02..8210eb2143acf56 100644
--- a/clang/lib/Serialization/ASTReaderDecl.cpp
+++ b/clang/lib/Serialization/ASTReaderDecl.cpp
@@ -2532,7 +2532,6 @@ RedeclarableResult ASTDeclReader::VisitClassTemplateSpecializationDeclImpl(
D->TemplateArgs = TemplateArgumentList::CreateCopy(C, TemplArgs);
D->PointOfInstantiation = readSourceLocation();
D->SpecializationKind = (TemplateSpecializationKind)Record.readInt();
- D->MatchedPackOnParmToNonPackOnArg = Record.readBool();
bool writtenAsCanonicalDecl = Record.readInt();
if (writtenAsCanonicalDecl) {
diff --git a/clang/lib/Serialization/ASTWriterDecl.cpp b/clang/lib/Serialization/ASTWriterDecl.cpp
index 3505db441e829ea..fa2294da95de8db 100644
--- a/clang/lib/Serialization/ASTWriterDecl.cpp
+++ b/clang/lib/Serialization/ASTWriterDecl.cpp
@@ -1843,7 +1843,6 @@ void ASTDeclWriter::VisitClassTemplateSpecializationDecl(
Record.AddTemplateArgumentList(&D->getTemplateArgs());
Record.AddSourceLocation(D->getPointOfInstantiation());
Record.push_back(D->getSpecializationKind());
- Record.push_back(D->hasMatchedPackOnParmToNonPackOnArg());
Record.push_back(D->isCanonicalDecl());
if (D->isCanonicalDecl()) {
diff --git a/clang/test/AST/ast-dump-templates.cpp b/clang/test/AST/ast-dump-templates.cpp
index 86af8c50f3174eb..9fcafbcbcc46b69 100644
--- a/clang/test/AST/ast-dump-templates.cpp
+++ b/clang/test/AST/ast-dump-templates.cpp
@@ -1,15 +1,7 @@
-// RUN: %clang_cc1 -triple x86_64-unknown-unknown -std=c++17 -ast-dump=json %s | FileCheck --check-prefix=JSON %s
-// RUN: %clang_cc1 -triple x86_64-unknown-unknown -std=c++17 -ast-print %s > %t
+// RUN: %clang_cc1 -std=c++1z -ast-print %s > %t
// RUN: FileCheck < %t %s -check-prefix=CHECK1
// RUN: FileCheck < %t %s -check-prefix=CHECK2
-// RUN: %clang_cc1 -triple x86_64-unknown-unknown -std=c++17 -ast-dump %s | FileCheck --check-prefix=DUMP %s
-
-// Test with serialization:
-// RUN: %clang_cc1 -triple x86_64-unknown-unknown -std=c++17 -emit-pch -o %t %s
-// RUN: %clang_cc1 -triple x86_64-unknown-unknown -x c++ -std=c++17 -include-pch %t \
-// RUN: -ast-dump-all /dev/null \
-// RUN: | sed -e "s/ <undeserialized declarations>//" -e "s/ imported//" \
-// RUN: | FileCheck --strict-whitespace --check-prefix=DUMP %s
+// RUN: %clang_cc1 -std=c++1z -ast-dump %s | FileCheck --check-prefix=DUMP %s
template <int X, typename Y, int Z = 5>
struct foo {
@@ -126,6038 +118,3 @@ void func() {
// DUMP-NEXT: `-TemplateTypeParm {{.*}} 'Key'
}
}
-
-namespace test7 {
- template <template<class> class TT> struct A {};
- template <class...> class B {};
- template struct A<B>;
-// DUMP-LABEL: NamespaceDecl {{.*}} test7{{$}}
-// DUMP: ClassTemplateSpecializationDecl {{.*}} struct A definition explicit_instantiation_definition strict-pack-match{{$}}
-} // namespce test7
-
-// NOTE: CHECK lines have been autogenerated by gen_ast_dump_json_test.py
-
-
-// JSON-NOT: {{^}}Dumping
-// JSON: "kind": "TranslationUnitDecl",
-// JSON-NEXT: "loc": {},
-// JSON-NEXT: "range": {
-// JSON-NEXT: "begin": {},
-// JSON-NEXT: "end": {}
-// JSON-NEXT: },
-// JSON-NEXT: "inner": [
-// JSON-NEXT: {
-// JSON-NEXT: "id": "0x{{.*}}",
-// JSON-NEXT: "kind": "TypedefDecl",
-// JSON-NEXT: "loc": {},
-// JSON-NEXT: "range": {
-// JSON-NEXT: "begin": {},
-// JSON-NEXT: "end": {}
-// JSON-NEXT: },
-// JSON-NEXT: "isImplicit": true,
-// JSON-NEXT: "name": "__int128_t",
-// JSON-NEXT: "type": {
-// JSON-NEXT: "qualType": "__int128"
-// JSON-NEXT: },
-// JSON-NEXT: "inner": [
-// JSON-NEXT: {
-// JSON-NEXT: "id": "0x{{.*}}",
-// JSON-NEXT: "kind": "BuiltinType",
-// JSON-NEXT: "type": {
-// JSON-NEXT: "qualType": "__int128"
-// JSON-NEXT: }
-// JSON-NEXT: }
-// JSON-NEXT: ]
-// JSON-NEXT: },
-// JSON-NEXT: {
-// JSON-NEXT: "id": "0x{{.*}}",
-// JSON-NEXT: "kind": "TypedefDecl",
-// JSON-NEXT: "loc": {},
-// JSON-NEXT: "range": {
-// JSON-NEXT: "begin": {},
-// JSON-NEXT: "end": {}
-// JSON-NEXT: },
-// JSON-NEXT: "isImplicit": true,
-// JSON-NEXT: "name": "__uint128_t",
-// JSON-NEXT: "type": {
-// JSON-NEXT: "qualType": "unsigned __int128"
-// JSON-NEXT: },
-// JSON-NEXT: "inner": [
-// JSON-NEXT: {
-// JSON-NEXT: "id": "0x{{.*}}",
-// JSON-NEXT: "kind": "BuiltinType",
-// JSON-NEXT: "type": {
-// JSON-NEXT: "qualType": "unsigned __int128"
-// JSON-NEXT: }
-// JSON-NEXT: }
-// JSON-NEXT: ]
-// JSON-NEXT: },
-// JSON-NEXT: {
-// JSON-NEXT: "id": "0x{{.*}}",
-// JSON-NEXT: "kind": "TypedefDecl",
-// JSON-NEXT: "loc": {},
-// JSON-NEXT: "range": {
-// JSON-NEXT: "begin": {},
-// JSON-NEXT: "end": {}
-// JSON-NEXT: },
-// JSON-NEXT: "isImplicit": true,
-// JSON-NEXT: "name": "__NSConstantString",
-// JSON-NEXT: "type": {
-// JSON-NEXT: "qualType": "__NSConstantString_tag"
-// JSON-NEXT: },
-// JSON-NEXT: "inner": [
-// JSON-NEXT: {
-// JSON-NEXT: "id": "0x{{.*}}",
-// JSON-NEXT: "kind": "RecordType",
-// JSON-NEXT: "type": {
-// JSON-NEXT: "qualType": "__NSConstantString_tag"
-// JSON-NEXT: },
-// JSON-NEXT: "decl": {
-// JSON-NEXT: "id": "0x{{.*}}",
-// JSON-NEXT: "kind": "CXXRecordDecl",
-// JSON-NEXT: "name": "__NSConstantString_tag"
-// JSON-NEXT: }
-// JSON-NEXT: }
-// JSON-NEXT: ]
-// JSON-NEXT: },
-// JSON-NEXT: {
-// JSON-NEXT: "id": "0x{{.*}}",
-// JSON-NEXT: "kind": "TypedefDecl",
-// JSON-NEXT: "loc": {},
-// JSON-NEXT: "range": {
-// JSON-NEXT: "begin": {},
-// JSON-NEXT: "end": {}
-// JSON-NEXT: },
-// JSON-NEXT: "isImplicit": true,
-// JSON-NEXT: "name": "__builtin_ms_va_list",
-// JSON-NEXT: "type": {
-// JSON-NEXT: "qualType": "char *"
-// JSON-NEXT: },
-// JSON-NEXT: "inner": [
-// JSON-NEXT: {
-// JSON-NEXT: "id": "0x{{.*}}",
-// JSON-NEXT: "kind": "PointerType",
-// JSON-NEXT: "type": {
-// JSON-NEXT: "qualType": "char *"
-// JSON-NEXT: },
-// JSON-NEXT: "inner": [
-// JSON-NEXT: {
-// JSON-NEXT: "id": "0x{{.*}}",
-// JSON-NEXT: "kind": "BuiltinType",
-// JSON-NEXT: "type": {
-// JSON-NEXT: "qualType": "char"
-// JSON-NEXT: }
-// JSON-NEXT: }
-// JSON-NEXT: ]
-// JSON-NEXT: }
-// JSON-NEXT: ]
-// JSON-NEXT: },
-// JSON-NEXT: {
-// JSON-NEXT: "id": "0x{{.*}}",
-// JSON-NEXT: "kind": "TypedefDecl",
-// JSON-NEXT: "loc": {},
-// JSON-NEXT: "range": {
-// JSON-NEXT: "begin": {},
-// JSON-NEXT: "end": {}
-// JSON-NEXT: },
-// JSON-NEXT: "isImplicit": true,
-// JSON-NEXT: "name": "__builtin_va_list",
-// JSON-NEXT: "type": {
-// JSON-NEXT: "qualType": "__va_list_tag[1]"
-// JSON-NEXT: },
-// JSON-NEXT: "inner": [
-// JSON-NEXT: {
-// JSON-NEXT: "id": "0x{{.*}}",
-// JSON-NEXT: "kind": "ConstantArrayType",
-// JSON-NEXT: "type": {
-// JSON-NEXT: "qualType": "__va_list_tag[1]"
-// JSON-NEXT: },
-// JSON-NEXT: "size": 1,
-// JSON-NEXT: "inner": [
-// JSON-NEXT: {
-// JSON-NEXT: "id": "0x{{.*}}",
-// JSON-NEXT: "kind": "RecordType",
-// JSON-NEXT: "type": {
-// JSON-NEXT: "qualType": "__va_list_tag"
-// JSON-NEXT: },
-// JSON-NEXT: "decl": {
-// JSON-NEXT: "id": "0x{{.*}}",
-// JSON-NEXT: "kind": "CXXRecordDecl",
-// JSON-NEXT: "name": "__va_list_tag"
-// JSON-NEXT: }
-// JSON-NEXT: }
-// JSON-NEXT: ]
-// JSON-NEXT: }
-// JSON-NEXT: ]
-// JSON-NEXT: },
-// JSON-NEXT: {
-// JSON-NEXT: "id": "0x{{.*}}",
-// JSON-NEXT: "kind": "ClassTemplateDecl",
-// JSON-NEXT: "loc": {
-// JSON-NEXT: "offset": 812,
-// JSON-NEXT: "file": "{{.*}}",
-// JSON-NEXT: "line": 15,
-// JSON-NEXT: "col": 8,
-// JSON-NEXT: "tokLen": 3
-// JSON-NEXT: },
-// JSON-NEXT: "range": {
-// JSON-NEXT: "begin": {
-// JSON-NEXT: "offset": 765,
-// JSON-NEXT: "line": 14,
-// JSON-NEXT: "col": 1,
-// JSON-NEXT: "tokLen": 8
-// JSON-NEXT: },
-// JSON-NEXT: "end": {
-// JSON-NEXT: "offset": 879,
-// JSON-NEXT: "line": 19,
-// JSON-NEXT: "col": 1,
-// JSON-NEXT: "tokLen": 1
-// JSON-NEXT: }
-// JSON-NEXT: },
-// JSON-NEXT: "name": "foo",
-// JSON-NEXT: "inner": [
-// JSON-NEXT: {
-// JSON-NEXT: "id": "0x{{.*}}",
-// JSON-NEXT: "kind": "NonTypeTemplateParmDecl",
-// JSON-NEXT: "loc": {
-// JSON-NEXT: "offset": 779,
-// JSON-NEXT: "line": 14,
-// JSON-NEXT: "col": 15,
-// JSON-NEXT: "tokLen": 1
-// JSON-NEXT: },
-// JSON-NEXT: "range": {
-// JSON-NEXT: "begin": {
-// JSON-NEXT: "offset": 775,
-// JSON-NEXT: "col": 11,
-// JSON-NEXT: "tokLen": 3
-// JSON-NEXT: },
-// JSON-NEXT: "end": {
-// JSON-NEXT: "offset": 779,
-// JSON-NEXT: "col": 15,
-// JSON-NEXT: "tokLen": 1
-// JSON-NEXT: }
-// JSON-NEXT: },
-// JSON-NEXT: "isReferenced": true,
-// JSON-NEXT: "name": "X",
-// JSON-NEXT: "type": {
-// JSON-NEXT: "qualType": "int"
-// JSON-NEXT: },
-// JSON-NEXT: "depth": 0,
-// JSON-NEXT: "index": 0
-// JSON-NEXT: },
-// JSON-NEXT: {
-// JSON-NEXT: "id": "0x{{.*}}",
-// JSON-NEXT: "kind": "TemplateTypeParmDecl",
-// JSON-NEXT: "loc": {
-// JSON-NEXT: "offset": 791,
-// JSON-NEXT: "col": 27,
-// JSON-NEXT: "tokLen": 1
-// JSON-NEXT: },
-// JSON-NEXT: "range": {
-// JSON-NEXT: "begin": {
-// JSON-NEXT: "offset": 782,
-// JSON-NEXT: "col": 18,
-// JSON-NEXT: "tokLen": 8
-// JSON-NEXT: },
-// JSON-NEXT: "end": {
-// JSON-NEXT: "offset": 791,
-// JSON-NEXT: "col": 27,
-// JSON-NEXT: "tokLen": 1
-// JSON-NEXT: }
-// JSON-NEXT: },
-// JSON-NEXT: "isReferenced": true,
-// JSON-NEXT: "name": "Y",
-// JSON-NEXT: "tagUsed": "typename",
-// JSON-NEXT: "depth": 0,
-// JSON-NEXT: "index": 1
-// JSON-NEXT: },
-// JSON-NEXT: {
-// JSON-NEXT: "id": "0x{{.*}}",
-// JSON-NEXT: "kind": "NonTypeTemplateParmDecl",
-// JSON-NEXT: "loc": {
-// JSON-NEXT: "offset": 798,
-// JSON-NEXT: "col": 34,
-// JSON-NEXT: "tokLen": 1
-// JSON-NEXT: },
-// JSON-NEXT: "range": {
-// JSON-NEXT: "begin": {
-// JSON-NEXT: "offset": 794,
-// JSON-NEXT: "col": 30,
-// JSON-NEXT: "tokLen": 3
-// JSON-NEXT: },
-// JSON-NEXT: "end": {
-// JSON-NEXT: "offset": 802,
-// JSON-NEXT: "col": 38,
-// JSON-NEXT: "tokLen": 1
-// JSON-NEXT: }
-// JSON-NEXT: },
-// JSON-NEXT: "isReferenced": true,
-// JSON-NEXT: "name": "Z",
-// JSON-NEXT: "type": {
-// JSON-NEXT: "qualType": "int"
-// JSON-NEXT: },
-// JSON-NEXT: "depth": 0,
-// JSON-NEXT: "index": 2,
-// JSON-NEXT: "defaultArg": {
-// JSON-NEXT: "kind": "TemplateArgument",
-// JSON-NEXT: "isExpr": true
-// JSON-NEXT: },
-// JSON-NEXT: "inner": [
-// JSON-NEXT: {
-// JSON-NEXT: "kind": "TemplateArgument",
-// JSON-NEXT: "range": {
-// JSON-NEXT: "begin": {
-// JSON-NEXT: "offset": 802,
-// JSON-NEXT: "col": 38,
-// JSON-NEXT: "tokLen": 1
-// JSON-NEXT: },
-// JSON-NEXT: "end": {
-// JSON-NEXT: "offset": 802,
-// JSON-NEXT: "col": 38,
-// JSON-NEXT: "tokLen": 1
-// JSON-NEXT: }
-// JSON-NEXT: },
-// JSON-NEXT: "isExpr": true,
-// JSON-NEXT: "inner": [
-// JSON-NEXT: {
-// JSON-NEXT: "id": "0x{{.*}}",
-// JSON-NEXT: "kind": "IntegerLiteral",
-// JSON-NEXT: "range": {
-// JSON-NEXT: "begin": {
-// JSON-NEXT: "offset": 802,
-// JSON-NEXT: "col": 38,
-// JSON-NEXT: "tokLen": 1
-// JSON-NEXT: },
-// JSON-NEXT: "end": {
-// JSON-NEXT: "offset": 802,
-// JSON-NEXT: "col": 38,
-// JSON-NEXT: "tokLen": 1
-// JSON-NEXT: }
-// JSON-NEXT: },
-// JSON-NEXT: "type": {
-// JSON-NEXT: "qualType": "int"
-// JSON-NEXT: },
-// JSON-NEXT: "valueCategory": "prvalue",
-// JSON-NEXT: "value": "5"
-// JSON-NEXT: }
-// JSON-NEXT: ]
-// JSON-NEXT: }
-// JSON-NEXT: ]
-// JSON-NEXT: },
-// JSON-NEXT: {
-// JSON-NEXT: "id": "0x{{.*}}",
-// JSON-NEXT: "kind": "CXXRecordDecl",
-// JSON-NEXT: "loc": {
-// JSON-NEXT: "offset": 812,
-// JSON-NEXT: "line": 15,
-// JSON-NEXT: "col": 8,
-// JSON-NEXT: "tokLen": 3
-// JSON-NEXT: },
-// JSON-NEXT: "range": {
-// JSON-NEXT: "begin": {
-// JSON-NEXT: "offset": 805,
-// JSON-NEXT: "col": 1,
-// JSON-NEXT: "tokLen": 6
-// JSON-NEXT: },
-// JSON-NEXT: "end": {
-// JSON-NEXT: "offset": 879,
-// JSON-NEXT: "line": 19,
-// JSON-NEXT: "col": 1,
-// JSON-NEXT: "tokLen": 1
-// JSON-NEXT: }
-// JSON-NEXT: },
-// JSON-NEXT: "name": "foo",
-// JSON-NEXT: "tagUsed": "struct",
-// JSON-NEXT: "completeDefinition": true,
-// JSON-NEXT: "definitionData": {
-// JSON-NEXT: "canConstDefaultInit": true,
-// JSON-NEXT: "copyAssign": {
-// JSON-NEXT: "hasConstParam": true,
-// JSON-NEXT: "implicitHasConstParam": true,
-// JSON-NEXT: "needsImplicit": true,
-// JSON-NEXT: "simple": true,
-// JSON-NEXT: "trivial": true
-// JSON-NEXT: },
-// JSON-NEXT: "copyCtor": {
-// JSON-NEXT: "hasConstParam": true,
-// JSON-NEXT: "implicitHasConstParam": true,
-// JSON-NEXT: "needsImplicit": true,
-// JSON-NEXT: "simple": true,
-// JSON-NEXT: "trivial": true
-// JSON-NEXT: },
-// JSON-NEXT: "defaultCtor": {
-// JSON-NEXT: "exists": true,
-// JSON-NEXT: "nonTrivial": true,
-// JSON-NEXT: "userProvided": true
-// JSON-NEXT: },
-// JSON-NEXT: "dtor": {
-// JSON-NEXT: "irrelevant": true,
-// JSON-NEXT: "needsImplicit": true,
-// JSON-NEXT: "simple": true,
-// JSON-NEXT: "trivial": true
-// JSON-NEXT: },
-// JSON-NEXT: "hasUserDeclaredConstructor": true,
-// JSON-NEXT: "isStandardLayout": true,
-// JSON-NEXT: "isTriviallyCopyable": true,
-// JSON-NEXT: "moveAssign": {
-// JSON-NEXT: "exists": true,
-// JSON-NEXT: "needsImplicit": true,
-// JSON-NEXT: "simple": true,
-// JSON-NEXT: "trivial": true
-// JSON-NEXT: },
-// JSON-NEXT: "moveCtor": {
-// JSON-NEXT: "exists": true,
-// JSON-NEXT: "needsImplicit": true,
-// JSON-NEXT: "simple": true,
-// JSON-NEXT: "trivial": true
-// JSON-NEXT: }
-// JSON-NEXT: },
-// JSON-NEXT: "inner": [
-// JSON-NEXT: {
-// JSON-NEXT: "id": "0x{{.*}}",
-// JSON-NEXT: "kind": "CXXRecordDecl",
-// JSON-NEXT: "loc": {
-// JSON-NEXT: "offset": 812,
-// JSON-NEXT: "line": 15,
-// JSON-NEXT: "col": 8,
-// JSON-NEXT: "tokLen": 3
-// JSON-NEXT: },
-// JSON-NEXT: "range": {
-// JSON-NEXT: "begin": {
-// JSON-NEXT: "offset": 805,
-// JSON-NEXT: "col": 1,
-// JSON-NEXT: "tokLen": 6
-// JSON-NEXT: },
-// JSON-NEXT: "end": {
-// JSON-NEXT: "offset": 812,
-// JSON-NEXT: "col": 8,
-// JSON-NEXT: "tokLen": 3
-// JSON-NEXT: }
-// JSON-NEXT: },
-// JSON-NEXT: "isImplicit": true,
-// JSON-NEXT: "isReferenced": true,
-// JSON-NEXT: "name": "foo",
-// JSON-NEXT: "tagUsed": "struct"
-// JSON-NEXT: },
-// JSON-NEXT: {
-// JSON-NEXT: "id": "0x{{.*}}",
-// JSON-NEXT: "kind": "FieldDecl",
-// JSON-NEXT: "loc": {
-// JSON-NEXT: "offset": 824,
-// JSON-NEXT: "line": 16,
-// JSON-NEXT: "col": 7,
-// JSON-NEXT: "tokLen": 8
-// JSON-NEXT: },
-// JSON-NEXT: "range": {
-// JSON-NEXT: "begin": {
-// JSON-NEXT: "offset": 820,
-// JSON-NEXT: "col": 3,
-// JSON-NEXT: "tokLen": 3
-// JSON-NEXT: },
-// JSON-NEXT: "end": {
-// JSON-NEXT: "offset": 824,
-// JSON-NEXT: "col": 7,
-// JSON-NEXT: "tokLen": 8
-// JSON-NEXT: }
-// JSON-NEXT: },
-// JSON-NEXT: "name": "constant",
-// JSON-NEXT: "type": {
-// JSON-NEXT: "qualType": "int"
-// JSON-NEXT: }
-// JSON-NEXT: },
-// JSON-NEXT: {
-// JSON-NEXT: "id": "0x{{.*}}",
-// JSON-NEXT: "kind": "CXXConstructorDecl",
-// JSON-NEXT: "loc": {
-// JSON-NEXT: "offset": 836,
-// JSON-NEXT: "line": 17,
-// JSON-NEXT: "col": 3,
-// JSON-NEXT: "tokLen": 3
-// JSON-NEXT: },
-// JSON-NEXT: "range": {
-// JSON-NEXT: "begin": {
-// JSON-NEXT: "offset": 836,
-// JSON-NEXT: "col": 3,
-// JSON-NEXT: "tokLen": 3
-// JSON-NEXT: },
-// JSON-NEXT: "end": {
-// JSON-NEXT: "offset": 843,
-// JSON-NEXT: "col": 10,
-// JSON-NEXT: "tokLen": 1
-// JSON-NEXT: }
-// JSON-NEXT: },
-// JSON-NEXT: "name": "foo<X, Y, Z>",
-// JSON-NEXT: "type": {
-// JSON-NEXT: "qualType": "void ()"
-// JSON-NEXT: },
-// JSON-NEXT: "inner": [
-// JSON-NEXT: {
-// JSON-NEXT: "id": "0x{{.*}}",
-// JSON-NEXT: "kind": "CompoundStmt",
-// JSON-NEXT: "range": {
-// JSON-NEXT: "begin": {
-// JSON-NEXT: "offset": 842,
-// JSON-NEXT: "col": 9,
-// JSON-NEXT: "tokLen": 1
-// JSON-NEXT: },
-// JSON-NEXT: "end": {
-// JSON-NEXT: "offset": 843,
-// JSON-NEXT: "col": 10,
-// JSON-NEXT: "tokLen": 1
-// JSON-NEXT: }
-// JSON-NEXT: }
-// JSON-NEXT: }
-// JSON-NEXT: ]
-// JSON-NEXT: },
-// JSON-NEXT: {
-// JSON-NEXT: "id": "0x{{.*}}",
-// JSON-NEXT: "kind": "CXXMethodDecl",
-// JSON-NEXT: "loc": {
-// JSON-NEXT: "offset": 849,
-// JSON-NEXT: "line": 18,
-// JSON-NEXT: "col": 5,
-// JSON-NEXT: "tokLen": 6
-// JSON-NEXT: },
-// JSON-NEXT: "range": {
-// JSON-NEXT: "begin": {
-// JSON-NEXT: "offset": 847,
-// JSON-NEXT: "col": 3,
-// JSON-NEXT: "tokLen": 1
-// JSON-NEXT: },
-// JSON-NEXT: "end": {
-// JSON-NEXT: "offset": 877,
-// JSON-NEXT: "col": 33,
-// JSON-NEXT: "tokLen": 1
-// JSON-NEXT: }
-// JSON-NEXT: },
-// JSON-NEXT: "name": "getSum",
-// JSON-NEXT: "type": {
-// JSON-NEXT: "qualType": "Y ()"
-// JSON-NEXT: },
-// JSON-NEXT: "inner": [
-// JSON-NEXT: {
-// JSON-NEXT: "id": "0x{{.*}}",
-// JSON-NEXT: "kind": "CompoundStmt",
-// JSON-NEXT: "range": {
-// JSON-NEXT: "begin": {
-// JSON-NEXT: "offset": 858,
-// JSON-NEXT: "col": 14,
-// JSON-NEXT: "tokLen": 1
-// JSON-NEXT: },
-// JSON-NEXT: "end": {
-// JSON-NEXT: "offset": 877,
-// JSON-NEXT: "col": 33,
-// JSON-NEXT: "tokLen": 1
-// JSON-NEXT: }
-// JSON-NEXT: },
-// JSON-NEXT: "inner": [
-// JSON-NEXT: {
-// JSON-NEXT: "id": "0x{{.*}}",
-// JSON-NEXT: "kind": "ReturnStmt",
-// JSON-NEXT: "range": {
-// JSON-NEXT: "begin": {
-// JSON-NEXT: "offset": 860,
-// JSON-NEXT: "col": 16,
-// JSON-NEXT: "tokLen": 6
-// JSON-NEXT: },
-// JSON-NEXT: "end": {
-// JSON-NEXT: "offset": 874,
-// JSON-NEXT: "col": 30,
-// JSON-NEXT: "tokLen": 1
-// JSON-NEXT: }
-// JSON-NEXT: },
-// JSON-NEXT: "inner": [
-// JSON-NEXT: {
-// JSON-NEXT: "id": "0x{{.*}}",
-// JSON-NEXT: "kind": "CXXUnresolvedConstructExpr",
-// JSON-NEXT: "range": {
-// JSON-NEXT: "begin": {
-// JSON-NEXT: "offset": 867,
-// JSON-NEXT: "col": 23,
-// JSON-NEXT: "tokLen": 1
-// JSON-NEXT: },
-// JSON-NEXT: "end": {
-// JSON-NEXT: "offset": 874,
-// JSON-NEXT: "col": 30,
-// JSON-NEXT: "tokLen": 1
-// JSON-NEXT: }
-// JSON-NEXT: },
-// JSON-NEXT: "type": {
-// JSON-NEXT: "qualType": "Y"
-// JSON-NEXT: },
-// JSON-NEXT: "valueCategory": "prvalue",
-// JSON-NEXT: "inner": [
-// JSON-NEXT: {
-// JSON-NEXT: "id": "0x{{.*}}",
-// JSON-NEXT: "kind": "BinaryOperator",
-// JSON-NEXT: "range": {
-// JSON-NEXT: "begin": {
-// JSON-NEXT: "offset": 869,
-// JSON-NEXT: "col": 25,
-// JSON-NEXT: "tokLen": 1
-// JSON-NEXT: },
-// JSON-NEXT: "end": {
-// JSON-NEXT: "offset": 873,
-// JSON-NEXT: "col": 29,
-// JSON-NEXT: "tokLen": 1
-// JSON-NEXT: }
-// JSON-NEXT: },
-// JSON-NEXT: "type": {
-// JSON-NEXT: "qualType": "int"
-// JSON-NEXT: },
-// JSON-NEXT: "valueCategory": "prvalue",
-// JSON-NEXT: "opcode": "+",
-// JSON-NEXT: "inner": [
-// JSON-NEXT: {
-// JSON-NEXT: "id": "0x{{.*}}",
-// JSON-NEXT: "kind": "DeclRefExpr",
-// JSON-NEXT: "range": {
-// JSON-NEXT: "begin": {
-// JSON-NEXT: "offset": 869,
-// JSON-NEXT: "col": 25,
-// JSON-NEXT: "tokLen": 1
-// JSON-NEXT: },
-// JSON-NEXT: "end": {
-// JSON-NEXT: "offset": 869,
-// JSON-NEXT: "col": 25,
-// JSON-NEXT: "tokLen": 1
-// JSON-NEXT: }
-// JSON-NEXT: },
-// JSON-NEXT: "type": {
-// JSON-NEXT: "qualType": "int"
-// JSON-NEXT: },
-// JSON-NEXT: "valueCategory": "prvalue",
-// JSON-NEXT: "referencedDecl": {
-// JSON-NEXT: "id": "0x{{.*}}",
-// JSON-NEXT: "kind": "NonTypeTemplateParmDecl",
-// JSON-NEXT: "name": "X",
-// JSON-NEXT: "type": {
-// JSON-NEXT: "qualType": "int"
-// JSON-NEXT: }
-// JSON-NEXT: }
-// JSON-NEXT: },
-// JSON-NEXT: {
-// JSON-NEXT: "id": "0x{{.*}}",
-// JSON-NEXT: "kind": "DeclRefExpr",
-// JSON-NEXT: "range": {
-// JSON-NEXT: "begin": {
-// JSON-NEXT: "offset": 873,
-// JSON-NEXT: "col": 29,
-// JSON-NEXT: "tokLen": 1
-// JSON-NEXT: },
-// JSON-NEXT: "end": {
-// JSON-NEXT: "offset": 873,
-// JSON-NEXT: "col": 29,
-// JSON-NEXT: "tokLen": 1
-// JSON-NEXT: }
-// JSON-NEXT: },
-// JSON-NEXT: "type": {
-// JSON-NEXT: "qualType": "int"
-// JSON-NEXT: },
-// JSON-NEXT: "valueCategory": "prvalue",
-// JSON-NEXT: "referencedDecl": {
-// JSON-NEXT: "id": "0x{{.*}}",
-// JSON-NEXT: "kind": "NonTypeTemplateParmDecl",
-// JSON-NEXT: "name": "Z",
-// JSON-NEXT: "type": {
-// JSON-NEXT: "qualType": "int"
-// JSON-NEXT: }
-// JSON-NEXT: }
-// JSON-NEXT: }
-// JSON-NEXT: ]
-// JSON-NEXT: }
-// JSON-NEXT: ]
-// JSON-NEXT: }
-// JSON-NEXT: ]
-// JSON-NEXT: }
-// JSON-NEXT: ]
-// JSON-NEXT: }
-// JSON-NEXT: ]
-// JSON-NEXT: }
-// JSON-NEXT: ]
-// JSON-NEXT: },
-// JSON-NEXT: {
-// JSON-NEXT: "id": "0x{{.*}}",
-// JSON-NEXT: "kind": "ClassTemplateSpecializationDecl",
-// JSON-NEXT: "loc": {
-// JSON-NEXT: "offset": 812,
-// JSON-NEXT: "line": 15,
-// JSON-NEXT: "col": 8,
-// JSON-NEXT: "tokLen": 3
-// JSON-NEXT: },
-// JSON-NEXT: "range": {
-// JSON-NEXT: "begin": {
-// JSON-NEXT: "offset": 765,
-// JSON-NEXT: "line": 14,
-// JSON-NEXT: "col": 1,
-// JSON-NEXT: "tokLen": 8
-// JSON-NEXT: },
-// JSON-NEXT: "end": {
-// JSON-NEXT: "offset": 879,
-// JSON-NEXT: "line": 19,
-// JSON-NEXT: "col": 1,
-// JSON-NEXT: "tokLen": 1
-// JSON-NEXT: }
-// JSON-NEXT: },
-// JSON-NEXT: "name": "foo",
-// JSON-NEXT: "tagUsed": "struct",
-// JSON-NEXT: "completeDefinition": true,
-// JSON-NEXT: "definitionData": {
-// JSON-NEXT: "canConstDefaultInit": true,
-// JSON-NEXT: "canPassInRegisters": true,
-// JSON-NEXT: "copyAssign": {
-// JSON-NEXT: "hasConstParam": true,
-// JSON-NEXT: "implicitHasConstParam": true,
-// JSON-NEXT: "needsImplicit": true,
-// JSON-NEXT: "simple": true,
-// JSON-NEXT: "trivial": true
-// JSON-NEXT: },
-// JSON-NEXT: "copyCtor": {
-// JSON-NEXT: "hasConstParam": true,
-// JSON-NEXT: "implicitHasConstParam": true,
-// JSON-NEXT: "simple": true,
-// JSON-NEXT: "trivial": true
-// JSON-NEXT: },
-// JSON-NEXT: "defaultCtor": {
-// JSON-NEXT: "exists": true,
-// JSON-NEXT: "nonTrivial": true,
-// JSON-NEXT: "userProvided": true
-// JSON-NEXT: },
-// JSON-NEXT: "dtor": {
-// JSON-NEXT: "irrelevant": true,
-// JSON-NEXT: "simple": true,
-// JSON-NEXT: "trivial": true
-// JSON-NEXT: },
-// JSON-NEXT: "hasUserDeclaredConstructor": true,
-// JSON-NEXT: "isStandardLayout": true,
-// JSON-NEXT: "isTriviallyCopyable": true,
-// JSON-NEXT: "moveAssign": {
-// JSON-NEXT: "exists": true,
-// JSON-NEXT: "needsImplicit": true,
-// JSON-NEXT: "simple": true,
-// JSON-NEXT: "trivial": true
-// JSON-NEXT: },
-// JSON-NEXT: "moveCtor": {
-// JSON-NEXT: "exists": true,
-// JSON-NEXT: "simple": true,
-// JSON-NEXT: "trivial": true
-// JSON-NEXT: }
-// JSON-NEXT: },
-// JSON-NEXT: "inner": [
-// JSON-NEXT: {
-// JSON-NEXT: "kind": "TemplateArgument",
-// JSON-NEXT: "value": 5
-// JSON-NEXT: },
-// JSON-NEXT: {
-// JSON-NEXT: "kind": "TemplateArgument",
-// JSON-NEXT: "type": {
-// JSON-NEXT: "qualType": "int"
-// JSON-NEXT: },
-// JSON-NEXT: "inner": [
-// JSON-NEXT: {
-// JSON-NEXT: "id": "0x{{.*}}",
-// JSON-NEXT: "kind": "BuiltinType",
-// JSON-NEXT: "type": {
-// JSON-NEXT: "qualType": "int"
-// JSON-NEXT: }
-// JSON-NEXT: }
-// JSON-NEXT: ]
-// JSON-NEXT: },
-// JSON-NEXT: {
-// JSON-NEXT: "kind": "TemplateArgument",
-// JSON-NEXT: "value": 5
-// JSON-NEXT: },
-// JSON-NEXT: {
-// JSON-NEXT: "id": "0x{{.*}}",
-// JSON-NEXT: "kind": "CXXRecordDecl",
-// JSON-NEXT: "loc": {
-// JSON-NEXT: "offset": 812,
-// JSON-NEXT: "line": 15,
-// JSON-NEXT: "col": 8,
-// JSON-NEXT: "tokLen": 3
-// JSON-NEXT: },
-// JSON-NEXT: "range": {
-// JSON-NEXT: "begin": {
-// JSON-NEXT: "offset": 805,
-// JSON-NEXT: "col": 1,
-// JSON-NEXT: "tokLen": 6
-// JSON-NEXT: },
-// JSON-NEXT: "end": {
-// JSON-NEXT: "offset": 812,
-// JSON-NEXT: "col": 8,
-// JSON-NEXT: "tokLen": 3
-// JSON-NEXT: }
-// JSON-NEXT: },
-// JSON-NEXT: "isImplicit": true,
-// JSON-NEXT: "name": "foo",
-// JSON-NEXT: "tagUsed": "struct"
-// JSON-NEXT: },
-// JSON-NEXT: {
-// JSON-NEXT: "id": "0x{{.*}}",
-// JSON-NEXT: "kind": "FieldDecl",
-// JSON-NEXT: "loc": {
-// JSON-NEXT: "offset": 824,
-// JSON-NEXT: "line": 16,
-// JSON-NEXT: "col": 7,
-// JSON-NEXT: "tokLen": 8
-// JSON-NEXT: },
-// JSON-NEXT: "range": {
-// JSON-NEXT: "begin": {
-// JSON-NEXT: "offset": 820,
-// JSON-NEXT: "col": 3,
-// JSON-NEXT: "tokLen": 3
-// JSON-NEXT: },
-// JSON-NEXT: "end": {
-// JSON-NEXT: "offset": 824,
-// JSON-NEXT: "col": 7,
-// JSON-NEXT: "tokLen": 8
-// JSON-NEXT: }
-// JSON-NEXT: },
-// JSON-NEXT: "name": "constant",
-// JSON-NEXT: "type": {
-// JSON-NEXT: "qualType": "int"
-// JSON-NEXT: }
-// JSON-NEXT: },
-// JSON-NEXT: {
-// JSON-NEXT: "id": "0x{{.*}}",
-// JSON-NEXT: "kind": "CXXConstructorDecl",
-// JSON-NEXT: "loc": {
-// JSON-NEXT: "offset": 836,
-// JSON-NEXT: "line": 17,
-// JSON-NEXT: "col": 3,
-// JSON-NEXT: "tokLen": 3
-// JSON-NEXT: },
-// JSON-NEXT: "range": {
-// JSON-NEXT: "begin": {
-// JSON-NEXT: "offset": 836,
-// JSON-NEXT: "col": 3,
-// JSON-NEXT: "tokLen": 3
-// JSON-NEXT: },
-// JSON-NEXT: "end": {
-// JSON-NEXT: "offset": 843,
-// JSON-NEXT: "col": 10,
-// JSON-NEXT: "tokLen": 1
-// JSON-NEXT: }
-// JSON-NEXT: },
-// JSON-NEXT: "isUsed": true,
-// JSON-NEXT: "name": "foo",
-// JSON-NEXT: "mangledName": "_ZN3fooILi5EiLi5EEC1Ev",
-// JSON-NEXT: "type": {
-// JSON-NEXT: "qualType": "void ()"
-// JSON-NEXT: },
-// JSON-NEXT: "inner": [
-// JSON-NEXT: {
-// JSON-NEXT: "id": "0x{{.*}}",
-// JSON-NEXT: "kind": "CompoundStmt",
-// JSON-NEXT: "range": {
-// JSON-NEXT: "begin": {
-// JSON-NEXT: "offset": 842,
-// JSON-NEXT: "col": 9,
-// JSON-NEXT: "tokLen": 1
-// JSON-NEXT: },
-// JSON-NEXT: "end": {
-// JSON-NEXT: "offset": 843,
-// JSON-NEXT: "col": 10,
-// JSON-NEXT: "tokLen": 1
-// JSON-NEXT: }
-// JSON-NEXT: }
-// JSON-NEXT: }
-// JSON-NEXT: ]
-// JSON-NEXT: },
-// JSON-NEXT: {
-// JSON-NEXT: "id": "0x{{.*}}",
-// JSON-NEXT: "kind": "CXXMethodDecl",
-// JSON-NEXT: "loc": {
-// JSON-NEXT: "offset": 849,
-// JSON-NEXT: "line": 18,
-// JSON-NEXT: "col": 5,
-// JSON-NEXT: "tokLen": 6
-// JSON-NEXT: },
-// JSON-NEXT: "range": {
-// JSON-NEXT: "begin": {
-// JSON-NEXT: "offset": 847,
-// JSON-NEXT: "col": 3,
-// JSON-NEXT: "tokLen": 1
-// JSON-NEXT: },
-// JSON-NEXT: "end": {
-// JSON-NEXT: "offset": 877,
-// JSON-NEXT: "col": 33,
-// JSON-NEXT: "tokLen": 1
-// JSON-NEXT: }
-// JSON-NEXT: },
-// JSON-NEXT: "isUsed": true,
-// JSON-NEXT: "name": "getSum",
-// JSON-NEXT: "mangledName": "_ZN3fooILi5EiLi5EE6getSumEv",
-// JSON-NEXT: "type": {
-// JSON-NEXT: "qualType": "int ()"
-// JSON-NEXT: },
-// JSON-NEXT: "inner": [
-// JSON-NEXT: {
-// JSON-NEXT: "id": "0x{{.*}}",
-// JSON-NEXT: "kind": "CompoundStmt",
-// JSON-NEXT: "range": {
-// JSON-NEXT: "begin": {
-// JSON-NEXT: "offset": 858,
-// JSON-NEXT: "col": 14,
-// JSON-NEXT: "tokLen": 1
-// JSON-NEXT: },
-// JSON-NEXT: "end": {
-// JSON-NEXT: "offset": 877,
-// JSON-NEXT: "col": 33,
-// JSON-NEXT: "tokLen": 1
-// JSON-NEXT: }
-// JSON-NEXT: },
-// JSON-NEXT: "inner": [
-// JSON-NEXT: {
-// JSON-NEXT: "id": "0x{{.*}}",
-// JSON-NEXT: "kind": "ReturnStmt",
-// JSON-NEXT: "range": {
-// JSON-NEXT: "begin": {
-// JSON-NEXT: "offset": 860,
-// JSON-NEXT: "col": 16,
-// JSON-NEXT: "tokLen": 6
-// JSON-NEXT: },
-// JSON-NEXT: "end": {
-// JSON-NEXT: "offset": 874,
-// JSON-NEXT: "col": 30,
-// JSON-NEXT: "tokLen": 1
-// JSON-NEXT: }
-// JSON-NEXT: },
-// JSON-NEXT: "inner": [
-// JSON-NEXT: {
-// JSON-NEXT: "id": "0x{{.*}}",
-// JSON-NEXT: "kind": "CXXFunctionalCastExpr",
-// JSON-NEXT: "range": {
-// JSON-NEXT: "begin": {
-// JSON-NEXT: "offset": 867,
-// JSON-NEXT: "col": 23,
-// JSON-NEXT: "tokLen": 1
-// JSON-NEXT: },
-// JSON-NEXT: "end": {
-// JSON-NEXT: "offset": 874,
-// JSON-NEXT: "col": 30,
-// JSON-NEXT: "tokLen": 1
-// JSON-NEXT: }
-// JSON-NEXT: },
-// JSON-NEXT: "type": {
-// JSON-NEXT: "qualType": "int"
-// JSON-NEXT: },
-// JSON-NEXT: "valueCategory": "prvalue",
-// JSON-NEXT: "castKind": "NoOp",
-// JSON-NEXT: "inner": [
-// JSON-NEXT: {
-// JSON-NEXT: "id": "0x{{.*}}",
-// JSON-NEXT: "kind": "BinaryOperator",
-// JSON-NEXT: "range": {
-// JSON-NEXT: "begin": {
-// JSON-NEXT: "offset": 869,
-// JSON-NEXT: "col": 25,
-// JSON-NEXT: "tokLen": 1
-// JSON-NEXT: },
-// JSON-NEXT: "end": {
-// JSON-NEXT: "offset": 873,
-// JSON-NEXT: "col": 29,
-// JSON-NEXT: "tokLen": 1
-// JSON-NEXT: }
-// JSON-NEXT: },
-// JSON-NEXT: "type": {
-// JSON-NEXT: "qualType": "int"
-// JSON-NEXT: },
-// JSON-NEXT: "valueCategory": "prvalue",
-// JSON-NEXT: "opcode": "+",
-// JSON-NEXT: "inner": [
-// JSON-NEXT: {
-// JSON-NEXT: "id": "0x{{.*}}",
-// JSON-NEXT: "kind": "SubstNonTypeTemplateParmExpr",
-// JSON-NEXT: "range": {
-// JSON-NEXT: "begin": {
-// JSON-NEXT: "offset": 869,
-// JSON-NEXT: "col": 25,
-// JSON-NEXT: "tokLen": 1
-// JSON-NEXT: },
-// JSON-NEXT: "end": {
-// JSON-NEXT: "offset": 869,
-// JSON-NEXT: "col": 25,
-// JSON-NEXT: "tokLen": 1
-// JSON-NEXT: }
-// JSON-NEXT: },
-// JSON-NEXT: "type": {
-// JSON-NEXT: "qualType": "int"
-// JSON-NEXT: },
-// JSON-NEXT: "valueCategory": "prvalue",
-// JSON-NEXT: "inner": [
-// JSON-NEXT: {
-// JSON-NEXT: "id": "0x{{.*}}",
-// JSON-NEXT: "kind": "NonTypeTemplateParmDecl",
-// JSON-NEXT: "loc": {
-// JSON-NEXT: "offset": 779,
-// JSON-NEXT: "line": 14,
-// JSON-NEXT: "col": 15,
-// JSON-NEXT: "tokLen": 1
-// JSON-NEXT: },
-// JSON-NEXT: "range": {
-// JSON-NEXT: "begin": {
-// JSON-NEXT: "offset": 775,
-// JSON-NEXT: "col": 11,
-// JSON-NEXT: "tokLen": 3
-// JSON-NEXT: },
-// JSON-NEXT: "end": {
-// JSON-NEXT: "offset": 779,
-// JSON-NEXT: "col": 15,
-// JSON-NEXT: "tokLen": 1
-// JSON-NEXT: }
-// JSON-NEXT: },
-// JSON-NEXT: "isReferenced": true,
-// JSON-NEXT: "name": "X",
-// JSON-NEXT: "type": {
-// JSON-NEXT: "qualType": "int"
-// JSON-NEXT: },
-// JSON-NEXT: "depth": 0,
-// JSON-NEXT: "index": 0
-// JSON-NEXT: },
-// JSON-NEXT: {
-// JSON-NEXT: "id": "0x{{.*}}",
-// JSON-NEXT: "kind": "IntegerLiteral",
-// JSON-NEXT: "range": {
-// JSON-NEXT: "begin": {
-// JSON-NEXT: "offset": 869,
-// JSON-NEXT: "line": 18,
-// JSON-NEXT: "col": 25,
-// JSON-NEXT: "tokLen": 1
-// JSON-NEXT: },
-// JSON-NEXT: "end": {
-// JSON-NEXT: "offset": 869,
-// JSON-NEXT: "col": 25,
-// JSON-NEXT: "tokLen": 1
-// JSON-NEXT: }
-// JSON-NEXT: },
-// JSON-NEXT: "type": {
-// JSON-NEXT: "qualType": "int"
-// JSON-NEXT: },
-// JSON-NEXT: "valueCategory": "prvalue",
-// JSON-NEXT: "value": "5"
-// JSON-NEXT: }
-// JSON-NEXT: ]
-// JSON-NEXT: },
-// JSON-NEXT: {
-// JSON-NEXT: "id": "0x{{.*}}",
-// JSON-NEXT: "kind": "SubstNonTypeTemplateParmExpr",
-// JSON-NEXT: "range": {
-// JSON-NEXT: "begin": {
-// JSON-NEXT: "offset": 873,
-// JSON-NEXT: "col": 29,
-// JSON-NEXT: "tokLen": 1
-// JSON-NEXT: },
-// JSON-NEXT: "end": {
-// JSON-NEXT: "offset": 873,
-// JSON-NEXT: "col": 29,
-// JSON-NEXT: "tokLen": 1
-// JSON-NEXT: }
-// JSON-NEXT: },
-// JSON-NEXT: "type": {
-// JSON-NEXT: "qualType": "int"
-// JSON-NEXT: },
-// JSON-NEXT: "valueCategory": "prvalue",
-// JSON-NEXT: "inner": [
-// JSON-NEXT: {
-// JSON-NEXT: "id": "0x{{.*}}",
-// JSON-NEXT: "kind": "NonTypeTemplateParmDecl",
-// JSON-NEXT: "loc": {
-// JSON-NEXT: "offset": 798,
-// JSON-NEXT: "line": 14,
-// JSON-NEXT: "col": 34,
-// JSON-NEXT: "tokLen": 1
-// JSON-NEXT: },
-// JSON-NEXT: "range": {
-// JSON-NEXT: "begin": {
-// JSON-NEXT: "offset": 794,
-// JSON-NEXT: "col": 30,
-// JSON-NEXT: "tokLen": 3
-// JSON-NEXT: },
-// JSON-NEXT: "end": {
-// JSON-NEXT: "offset": 802,
-// JSON-NEXT: "col": 38,
-// JSON-NEXT: "tokLen": 1
-// JSON-NEXT: }
-// JSON-NEXT: },
-// JSON-NEXT: "isReferenced": true,
-// JSON-NEXT: "name": "Z",
-// JSON-NEXT: "type": {
-// JSON-NEXT: "qualType": "int"
-// JSON-NEXT: },
-// JSON-NEXT: "depth": 0,
-// JSON-NEXT: "index": 2,
-// JSON-NEXT: "defaultArg": {
-// JSON-NEXT: "kind": "TemplateArgument",
-// JSON-NEXT: "isExpr": true
-// JSON-NEXT: },
-// JSON-NEXT: "inner": [
-// JSON-NEXT: {
-// JSON-NEXT: "kind": "TemplateArgument",
-// JSON-NEXT: "range": {
-// JSON-NEXT: "begin": {
-// JSON-NEXT: "offset": 802,
-// JSON-NEXT: "col": 38,
-// JSON-NEXT: "tokLen": 1
-// JSON-NEXT: },
-// JSON-NEXT: "end": {
-// JSON-NEXT: "offset": 802,
-// JSON-NEXT: "col": 38,
-// JSON-NEXT: "tokLen": 1
-// JSON-NEXT: }
-// JSON-NEXT: },
-// JSON-NEXT: "isExpr": true,
-// JSON-NEXT: "inner": [
-// JSON-NEXT: {
-// JSON-NEXT: "id": "0x{{.*}}",
-// JSON-NEXT: "kind": "IntegerLiteral",
-// JSON-NEXT: "range": {
-// JSON-NEXT: "begin": {
-// JSON-NEXT: "offset": 802,
-// JSON-NEXT: "col": 38,
-// JSON-NEXT: "tokLen": 1
-// JSON-NEXT: },
-// JSON-NEXT: "end": {
-// JSON-NEXT: "offset": 802,
-// JSON-NEXT: "col": 38,
-// JSON-NEXT: "tokLen": 1
-// JSON-NEXT: }
-// JSON-NEXT: },
-// JSON-NEXT: "type": {
-// JSON-NEXT: "qualType": "int"
-// JSON-NEXT: },
-// JSON-NEXT: "valueCategory": "prvalue",
-// JSON-NEXT: "value": "5"
-// JSON-NEXT: }
-// JSON-NEXT: ]
-// JSON-NEXT: }
-// JSON-NEXT: ]
-// JSON-NEXT: },
-// JSON-NEXT: {
-// JSON-NEXT: "id": "0x{{.*}}",
-// JSON-NEXT: "kind": "IntegerLiteral",
-// JSON-NEXT: "range": {
-// JSON-NEXT: "begin": {
-// JSON-NEXT: "offset": 873,
-// JSON-NEXT: "line": 18,
-// JSON-NEXT: "col": 29,
-// JSON-NEXT: "tokLen": 1
-// JSON-NEXT: },
-// JSON-NEXT: "end": {
-// JSON-NEXT: "offset": 873,
-// JSON-NEXT: "col": 29,
-// JSON-NEXT: "tokLen": 1
-// JSON-NEXT: }
-// JSON-NEXT: },
-// JSON-NEXT: "type": {
-// JSON-NEXT: "qualType": "int"
-// JSON-NEXT: },
-// JSON-NEXT: "valueCategory": "prvalue",
-// JSON-NEXT: "value": "5"
-// JSON-NEXT: }
-// JSON-NEXT: ]
-// JSON-NEXT: }
-// JSON-NEXT: ]
-// JSON-NEXT: }
-// JSON-NEXT: ]
-// JSON-NEXT: }
-// JSON-NEXT: ]
-// JSON-NEXT: }
-// JSON-NEXT: ]
-// JSON-NEXT: }
-// JSON-NEXT: ]
-// JSON-NEXT: },
-// JSON-NEXT: {
-// JSON-NEXT: "id": "0x{{.*}}",
-// JSON-NEXT: "kind": "CXXConstructorDecl",
-// JSON-NEXT: "loc": {
-// JSON-NEXT: "offset": 812,
-// JSON-NEXT: "line": 15,
-// JSON-NEXT: "col": 8,
-// JSON-NEXT: "tokLen": 3
-// JSON-NEXT: },
-// JSON-NEXT: "range": {
-// JSON-NEXT: "begin": {
-// JSON-NEXT: "offset": 812,
-// JSON-NEXT: "col": 8,
-// JSON-NEXT: "tokLen": 3
-// JSON-NEXT: },
-// JSON-NEXT: "end": {
-// JSON-NEXT: "offset": 812,
-// JSON-NEXT: "col": 8,
-// JSON-NEXT: "tokLen": 3
-// JSON-NEXT: }
-// JSON-NEXT: },
-// JSON-NEXT: "isImplicit": true,
-// JSON-NEXT: "name": "foo",
-// JSON-NEXT: "mangledName": "_ZN3fooILi5EiLi5EEC1ERKS0_",
-// JSON-NEXT: "type": {
-// JSON-NEXT: "qualType": "void (const foo<5, int> &)"
-// JSON-NEXT: },
-// JSON-NEXT: "inline": true,
-// JSON-NEXT: "constexpr": true,
-// JSON-NEXT: "explicitlyDefaulted": "default",
-// JSON-NEXT: "inner": [
-// JSON-NEXT: {
-// JSON-NEXT: "id": "0x{{.*}}",
-// JSON-NEXT: "kind": "ParmVarDecl",
-// JSON-NEXT: "loc": {
-// JSON-NEXT: "offset": 812,
-// JSON-NEXT: "col": 8,
-// JSON-NEXT: "tokLen": 3
-// JSON-NEXT: },
-// JSON-NEXT: "range": {
-// JSON-NEXT: "begin": {
-// JSON-NEXT: "offset": 812,
-// JSON-NEXT: "col": 8,
-// JSON-NEXT: "tokLen": 3
-// JSON-NEXT: },
-// JSON-NEXT: "end": {
-// JSON-NEXT: "offset": 812,
-// JSON-NEXT: "col": 8,
-// JSON-NEXT: "tokLen": 3
-// JSON-NEXT: }
-// JSON-NEXT: },
-// JSON-NEXT: "type": {
-// JSON-NEXT: "qualType": "const foo<5, int> &"
-// JSON-NEXT: }
-// JSON-NEXT: }
-// JSON-NEXT: ]
-// JSON-NEXT: },
-// JSON-NEXT: {
-// JSON-NEXT: "id": "0x{{.*}}",
-// JSON-NEXT: "kind": "CXXConstructorDecl",
-// JSON-NEXT: "loc": {
-// JSON-NEXT: "offset": 812,
-// JSON-NEXT: "col": 8,
-// JSON-NEXT: "tokLen": 3
-// JSON-NEXT: },
-// JSON-NEXT: "range": {
-// JSON-NEXT: "begin": {
-// JSON-NEXT: "offset": 812,
-// JSON-NEXT: "col": 8,
-// JSON-NEXT: "tokLen": 3
-// JSON-NEXT: },
-// JSON-NEXT: "end": {
-// JSON-NEXT: "offset": 812,
-// JSON-NEXT: "col": 8,
-// JSON-NEXT: "tokLen": 3
-// JSON-NEXT: }
-// JSON-NEXT: },
-// JSON-NEXT: "isImplicit": true,
-// JSON-NEXT: "name": "foo",
-// JSON-NEXT: "mangledName": "_ZN3fooILi5EiLi5EEC1EOS0_",
-// JSON-NEXT: "type": {
-// JSON-NEXT: "qualType": "void (foo<5, int> &&)"
-// JSON-NEXT: },
-// JSON-NEXT: "inline": true,
-// JSON-NEXT: "constexpr": true,
-// JSON-NEXT: "explicitlyDefaulted": "default",
-// JSON-NEXT: "inner": [
-// JSON-NEXT: {
-// JSON-NEXT: "id": "0x{{.*}}",
-// JSON-NEXT: "kind": "ParmVarDecl",
-// JSON-NEXT: "loc": {
-// JSON-NEXT: "offset": 812,
-// JSON-NEXT: "col": 8,
-// JSON-NEXT: "tokLen": 3
-// JSON-NEXT: },
-// JSON-NEXT: "range": {
-// JSON-NEXT: "begin": {
-// JSON-NEXT: "offset": 812,
-// JSON-NEXT: "col": 8,
-// JSON-NEXT: "tokLen": 3
-// JSON-NEXT: },
-// JSON-NEXT: "end": {
-// JSON-NEXT: "offset": 812,
-// JSON-NEXT: "col": 8,
-// JSON-NEXT: "tokLen": 3
-// JSON-NEXT: }
-// JSON-NEXT: },
-// JSON-NEXT: "type": {
-// JSON-NEXT: "qualType": "foo<5, int> &&"
-// JSON-NEXT: }
-// JSON-NEXT: }
-// JSON-NEXT: ]
-// JSON-NEXT: },
-// JSON-NEXT: {
-// JSON-NEXT: "id": "0x{{.*}}",
-// JSON-NEXT: "kind": "CXXDestructorDecl",
-// JSON-NEXT: "loc": {
-// JSON-NEXT: "offset": 812,
-// JSON-NEXT: "col": 8,
-// JSON-NEXT: "tokLen": 3
-// JSON-NEXT: },
-// JSON-NEXT: "range": {
-// JSON-NEXT: "begin": {
-// JSON-NEXT: "offset": 812,
-// JSON-NEXT: "col": 8,
-// JSON-NEXT: "tokLen": 3
-// JSON-NEXT: },
-// JSON-NEXT: "end": {
-// JSON-NEXT: "offset": 812,
-// JSON-NEXT: "col": 8,
-// JSON-NEXT: "tokLen": 3
-// JSON-NEXT: }
-// JSON-NEXT: },
-// JSON-NEXT: "isImplicit": true,
-// JSON-NEXT: "isReferenced": true,
-// JSON-NEXT: "name": "~foo",
-// JSON-NEXT: "mangledName": "_ZN3fooILi5EiLi5EED1Ev",
-// JSON-NEXT: "type": {
-// JSON-NEXT: "qualType": "void () noexcept"
-// JSON-NEXT: },
-// JSON-NEXT: "inline": true,
-// JSON-NEXT: "explicitlyDefaulted": "default"
-// JSON-NEXT: }
-// JSON-NEXT: ]
-// JSON-NEXT: },
-// JSON-NEXT: {
-// JSON-NEXT: "id": "0x{{.*}}",
-// JSON-NEXT: "kind": "ClassTemplateSpecializationDecl",
-// JSON-NEXT: "loc": {
-// JSON-NEXT: "offset": 812,
-// JSON-NEXT: "col": 8,
-// JSON-NEXT: "tokLen": 3
-// JSON-NEXT: },
-// JSON-NEXT: "range": {
-// JSON-NEXT: "begin": {
-// JSON-NEXT: "offset": 765,
-// JSON-NEXT: "line": 14,
-// JSON-NEXT: "col": 1,
-// JSON-NEXT: "tokLen": 8
-// JSON-NEXT: },
-// JSON-NEXT: "end": {
-// JSON-NEXT: "offset": 879,
-// JSON-NEXT: "line": 19,
-// JSON-NEXT: "col": 1,
-// JSON-NEXT: "tokLen": 1
-// JSON-NEXT: }
-// JSON-NEXT: },
-// JSON-NEXT: "name": "foo",
-// JSON-NEXT: "tagUsed": "struct",
-// JSON-NEXT: "completeDefinition": true,
-// JSON-NEXT: "definitionData": {
-// JSON-NEXT: "canConstDefaultInit": true,
-// JSON-NEXT: "canPassInRegisters": true,
-// JSON-NEXT: "copyAssign": {
-// JSON-NEXT: "hasConstParam": true,
-// JSON-NEXT: "implicitHasConstParam": true,
-// JSON-NEXT: "needsImplicit": true,
-// JSON-NEXT: "simple": true,
-// JSON-NEXT: "trivial": true
-// JSON-NEXT: },
-// JSON-NEXT: "copyCtor": {
-// JSON-NEXT: "hasConstParam": true,
-// JSON-NEXT: "implicitHasConstParam": true,
-// JSON-NEXT: "simple": true,
-// JSON-NEXT: "trivial": true
-// JSON-NEXT: },
-// JSON-NEXT: "defaultCtor": {
-// JSON-NEXT: "exists": true,
-// JSON-NEXT: "nonTrivial": true,
-// JSON-NEXT: "userProvided": true
-// JSON-NEXT: },
-// JSON-NEXT: "dtor": {
-// JSON-NEXT: "irrelevant": true,
-// JSON-NEXT: "simple": true,
-// JSON-NEXT: "trivial": true
-// JSON-NEXT: },
-// JSON-NEXT: "hasUserDeclaredConstructor": true,
-// JSON-NEXT: "isStandardLayout": true,
-// JSON-NEXT: "isTriviallyCopyable": true,
-// JSON-NEXT: "moveAssign": {
-// JSON-NEXT: "exists": true,
-// JSON-NEXT: "needsImplicit": true,
-// JSON-NEXT: "simple": true,
-// JSON-NEXT: "trivial": true
-// JSON-NEXT: },
-// JSON-NEXT: "moveCtor": {
-// JSON-NEXT: "exists": true,
-// JSON-NEXT: "simple": true,
-// JSON-NEXT: "trivial": true
-// JSON-NEXT: }
-// JSON-NEXT: },
-// JSON-NEXT: "inner": [
-// JSON-NEXT: {
-// JSON-NEXT: "kind": "TemplateArgument",
-// JSON-NEXT: "value": 2
-// JSON-NEXT: },
-// JSON-NEXT: {
-// JSON-NEXT: "kind": "TemplateArgument",
-// JSON-NEXT: "type": {
-// JSON-NEXT: "qualType": "double"
-// JSON-NEXT: },
-// JSON-NEXT: "inner": [
-// JSON-NEXT: {
-// JSON-NEXT: "id": "0x{{.*}}",
-// JSON-NEXT: "kind": "BuiltinType",
-// JSON-NEXT: "type": {
-// JSON-NEXT: "qualType": "double"
-// JSON-NEXT: }
-// JSON-NEXT: }
-// JSON-NEXT: ]
-// JSON-NEXT: },
-// JSON-NEXT: {
-// JSON-NEXT: "kind": "TemplateArgument",
-// JSON-NEXT: "value": 3
-// JSON-NEXT: },
-// JSON-NEXT: {
-// JSON-NEXT: "id": "0x{{.*}}",
-// JSON-NEXT: "kind": "CXXRecordDecl",
-// JSON-NEXT: "loc": {
-// JSON-NEXT: "offset": 812,
-// JSON-NEXT: "line": 15,
-// JSON-NEXT: "col": 8,
-// JSON-NEXT: "tokLen": 3
-// JSON-NEXT: },
-// JSON-NEXT: "range": {
-// JSON-NEXT: "begin": {
-// JSON-NEXT: "offset": 805,
-// JSON-NEXT: "col": 1,
-// JSON-NEXT: "tokLen": 6
-// JSON-NEXT: },
-// JSON-NEXT: "end": {
-// JSON-NEXT: "offset": 812,
-// JSON-NEXT: "col": 8,
-// JSON-NEXT: "tokLen": 3
-// JSON-NEXT: }
-// JSON-NEXT: },
-// JSON-NEXT: "isImplicit": true,
-// JSON-NEXT: "name": "foo",
-// JSON-NEXT: "tagUsed": "struct"
-// JSON-NEXT: },
-// JSON-NEXT: {
-// JSON-NEXT: "id": "0x{{.*}}",
-// JSON-NEXT: "kind": "FieldDecl",
-// JSON-NEXT: "loc": {
-// JSON-NEXT: "offset": 824,
-// JSON-NEXT: "line": 16,
-// JSON-NEXT: "col": 7,
-// JSON-NEXT: "tokLen": 8
-// JSON-NEXT: },
-// JSON-NEXT: "range": {
-// JSON-NEXT: "begin": {
-// JSON-NEXT: "offset": 820,
-// JSON-NEXT: "col": 3,
-// JSON-NEXT: "tokLen": 3
-// JSON-NEXT: },
-// JSON-NEXT: "end": {
-// JSON-NEXT: "offset": 824,
-// JSON-NEXT: "col": 7,
-// JSON-NEXT: "tokLen": 8
-// JSON-NEXT: }
-// JSON-NEXT: },
-// JSON-NEXT: "name": "constant",
-// JSON-NEXT: "type": {
-// JSON-NEXT: "qualType": "int"
-// JSON-NEXT: }
-// JSON-NEXT: },
-// JSON-NEXT: {
-// JSON-NEXT: "id": "0x{{.*}}",
-// JSON-NEXT: "kind": "CXXConstructorDecl",
-// JSON-NEXT: "loc": {
-// JSON-NEXT: "offset": 836,
-// JSON-NEXT: "line": 17,
-// JSON-NEXT: "col": 3,
-// JSON-NEXT: "tokLen": 3
-// JSON-NEXT: },
-// JSON-NEXT: "range": {
-// JSON-NEXT: "begin": {
-// JSON-NEXT: "offset": 836,
-// JSON-NEXT: "col": 3,
-// JSON-NEXT: "tokLen": 3
-// JSON-NEXT: },
-// JSON-NEXT: "end": {
-// JSON-NEXT: "offset": 843,
-// JSON-NEXT: "col": 10,
-// JSON-NEXT: "tokLen": 1
-// JSON-NEXT: }
-// JSON-NEXT: },
-// JSON-NEXT: "isUsed": true,
-// JSON-NEXT: "name": "foo",
-// JSON-NEXT: "mangledName": "_ZN3fooILi2EdLi3EEC1Ev",
-// JSON-NEXT: "type": {
-// JSON-NEXT: "qualType": "void ()"
-// JSON-NEXT: },
-// JSON-NEXT: "inner": [
-// JSON-NEXT: {
-// JSON-NEXT: "id": "0x{{.*}}",
-// JSON-NEXT: "kind": "CompoundStmt",
-// JSON-NEXT: "range": {
-// JSON-NEXT: "begin": {
-// JSON-NEXT: "offset": 842,
-// JSON-NEXT: "col": 9,
-// JSON-NEXT: "tokLen": 1
-// JSON-NEXT: },
-// JSON-NEXT: "end": {
-// JSON-NEXT: "offset": 843,
-// JSON-NEXT: "col": 10,
-// JSON-NEXT: "tokLen": 1
-// JSON-NEXT: }
-// JSON-NEXT: }
-// JSON-NEXT: }
-// JSON-NEXT: ]
-// JSON-NEXT: },
-// JSON-NEXT: {
-// JSON-NEXT: "id": "0x{{.*}}",
-// JSON-NEXT: "kind": "CXXMethodDecl",
-// JSON-NEXT: "loc": {
-// JSON-NEXT: "offset": 849,
-// JSON-NEXT: "line": 18,
-// JSON-NEXT: "col": 5,
-// JSON-NEXT: "tokLen": 6
-// JSON-NEXT: },
-// JSON-NEXT: "range": {
-// JSON-NEXT: "begin": {
-// JSON-NEXT: "offset": 847,
-// JSON-NEXT: "col": 3,
-// JSON-NEXT: "tokLen": 1
-// JSON-NEXT: },
-// JSON-NEXT: "end": {
-// JSON-NEXT: "offset": 877,
-// JSON-NEXT: "col": 33,
-// JSON-NEXT: "tokLen": 1
-// JSON-NEXT: }
-// JSON-NEXT: },
-// JSON-NEXT: "isUsed": true,
-// JSON-NEXT: "name": "getSum",
-// JSON-NEXT: "mangledName": "_ZN3fooILi2EdLi3EE6getSumEv",
-// JSON-NEXT: "type": {
-// JSON-NEXT: "qualType": "double ()"
-// JSON-NEXT: },
-// JSON-NEXT: "inner": [
-// JSON-NEXT: {
-// JSON-NEXT: "id": "0x{{.*}}",
-// JSON-NEXT: "kind": "CompoundStmt",
-// JSON-NEXT: "range": {
-// JSON-NEXT: "begin": {
-// JSON-NEXT: "offset": 858,
-// JSON-NEXT: "col": 14,
-// JSON-NEXT: "tokLen": 1
-// JSON-NEXT: },
-// JSON-NEXT: "end": {
-// JSON-NEXT: "offset": 877,
-// JSON-NEXT: "col": 33,
-// JSON-NEXT: "tokLen": 1
-// JSON-NEXT: }
-// JSON-NEXT: },
-// JSON-NEXT: "inner": [
-// JSON-NEXT: {
-// JSON-NEXT: "id": "0x{{.*}}",
-// JSON-NEXT: "kind": "ReturnStmt",
-// JSON-NEXT: "range": {
-// JSON-NEXT: "begin": {
-// JSON-NEXT: "offset": 860,
-// JSON-NEXT: "col": 16,
-// JSON-NEXT: "tokLen": 6
-// JSON-NEXT: },
-// JSON-NEXT: "end": {
-// JSON-NEXT: "offset": 874,
-// JSON-NEXT: "col": 30,
-// JSON-NEXT: "tokLen": 1
-// JSON-NEXT: }
-// JSON-NEXT: },
-// JSON-NEXT: "inner": [
-// JSON-NEXT: {
-// JSON-NEXT: "id": "0x{{.*}}",
-// JSON-NEXT: "kind": "CXXFunctionalCastExpr",
-// JSON-NEXT: "range": {
-// JSON-NEXT: "begin": {
-// JSON-NEXT: "offset": 867,
-// JSON-NEXT: "col": 23,
-// JSON-NEXT: "tokLen": 1
-// JSON-NEXT: },
-// JSON-NEXT: "end": {
-// JSON-NEXT: "offset": 874,
-// JSON-NEXT: "col": 30,
-// JSON-NEXT: "tokLen": 1
-// JSON-NEXT: }
-// JSON-NEXT: },
-// JSON-NEXT: "type": {
-// JSON-NEXT: "qualType": "double"
-// JSON-NEXT: },
-// JSON-NEXT: "valueCategory": "prvalue",
-// JSON-NEXT: "castKind": "NoOp",
-// JSON-NEXT: "inner": [
-// JSON-NEXT: {
-// JSON-NEXT: "id": "0x{{.*}}",
-// JSON-NEXT: "kind": "ImplicitCastExpr",
-// JSON-NEXT: "range": {
-// JSON-NEXT: "begin": {
-// JSON-NEXT: "offset": 869,
-// JSON-NEXT: "col": 25,
-// JSON-NEXT: "tokLen": 1
-// JSON-NEXT: },
-// JSON-NEXT: "end": {
-// JSON-NEXT: "offset": 873,
-// JSON-NEXT: "col": 29,
-// JSON-NEXT: "tokLen": 1
-// JSON-NEXT: }
-// JSON-NEXT: },
-// JSON-NEXT: "type": {
-// JSON-NEXT: "qualType": "double"
-// JSON-NEXT: },
-// JSON-NEXT: "valueCategory": "prvalue",
-// JSON-NEXT: "castKind": "IntegralToFloating",
-// JSON-NEXT: "isPartOfExplicitCast": true,
-// JSON-NEXT: "inner": [
-// JSON-NEXT: {
-// JSON-NEXT: "id": "0x{{.*}}",
-// JSON-NEXT: "kind": "BinaryOperator",
-// JSON-NEXT: "range": {
-// JSON-NEXT: "begin": {
-// JSON-NEXT: "offset": 869,
-// JSON-NEXT: "col": 25,
-// JSON-NEXT: "tokLen": 1
-// JSON-NEXT: },
-// JSON-NEXT: "end": {
-// JSON-NEXT: "offset": 873,
-// JSON-NEXT: "col": 29,
-// JSON-NEXT: "tokLen": 1
-// JSON-NEXT: }
-// JSON-NEXT: },
-// JSON-NEXT: "type": {
-// JSON-NEXT: "qualType": "int"
-// JSON-NEXT: },
-// JSON-NEXT: "valueCategory": "prvalue",
-// JSON-NEXT: "opcode": "+",
-// JSON-NEXT: "inner": [
-// JSON-NEXT: {
-// JSON-NEXT: "id": "0x{{.*}}",
-// JSON-NEXT: "kind": "SubstNonTypeTemplateParmExpr",
-// JSON-NEXT: "range": {
-// JSON-NEXT: "begin": {
-// JSON-NEXT: "offset": 869,
-// JSON-NEXT: "col": 25,
-// JSON-NEXT: "tokLen": 1
-// JSON-NEXT: },
-// JSON-NEXT: "end": {
-// JSON-NEXT: "offset": 869,
-// JSON-NEXT: "col": 25,
-// JSON-NEXT: "tokLen": 1
-// JSON-NEXT: }
-// JSON-NEXT: },
-// JSON-NEXT: "type": {
-// JSON-NEXT: "qualType": "int"
-// JSON-NEXT: },
-// JSON-NEXT: "valueCategory": "prvalue",
-// JSON-NEXT: "inner": [
-// JSON-NEXT: {
-// JSON-NEXT: "id": "0x{{.*}}",
-// JSON-NEXT: "kind": "NonTypeTemplateParmDecl",
-// JSON-NEXT: "loc": {
-// JSON-NEXT: "offset": 779,
-// JSON-NEXT: "line": 14,
-// JSON-NEXT: "col": 15,
-// JSON-NEXT: "tokLen": 1
-// JSON-NEXT: },
-// JSON-NEXT: "range": {
-// JSON-NEXT: "begin": {
-// JSON-NEXT: "offset": 775,
-// JSON-NEXT: "col": 11,
-// JSON-NEXT: "tokLen": 3
-// JSON-NEXT: },
-// JSON-NEXT: "end": {
-// JSON-NEXT: "offset": 779,
-// JSON-NEXT: "col": 15,
-// JSON-NEXT: "tokLen": 1
-// JSON-NEXT: }
-// JSON-NEXT: },
-// JSON-NEXT: "isReferenced": true,
-// JSON-NEXT: "name": "X",
-// JSON-NEXT: "type": {
-// JSON-NEXT: "qualType": "int"
-// JSON-NEXT: },
-// JSON-NEXT: "depth": 0,
-// JSON-NEXT: "index": 0
-// JSON-NEXT: },
-// JSON-NEXT: {
-// JSON-NEXT: "id": "0x{{.*}}",
-// JSON-NEXT: "kind": "IntegerLiteral",
-// JSON-NEXT: "range": {
-// JSON-NEXT: "begin": {
-// JSON-NEXT: "offset": 869,
-// JSON-NEXT: "line": 18,
-// JSON-NEXT: "col": 25,
-// JSON-NEXT: "tokLen": 1
-// JSON-NEXT: },
-// JSON-NEXT: "end": {
-// JSON-NEXT: "offset": 869,
-// JSON-NEXT: "col": 25,
-// JSON-NEXT: "tokLen": 1
-// JSON-NEXT: }
-// JSON-NEXT: },
-// JSON-NEXT: "type": {
-// JSON-NEXT: "qualType": "int"
-// JSON-NEXT: },
-// JSON-NEXT: "valueCategory": "prvalue",
-// JSON-NEXT: "value": "2"
-// JSON-NEXT: }
-// JSON-NEXT: ]
-// JSON-NEXT: },
-// JSON-NEXT: {
-// JSON-NEXT: "id": "0x{{.*}}",
-// JSON-NEXT: "kind": "SubstNonTypeTemplateParmExpr",
-// JSON-NEXT: "range": {
-// JSON-NEXT: "begin": {
-// JSON-NEXT: "offset": 873,
-// JSON-NEXT: "col": 29,
-// JSON-NEXT: "tokLen": 1
-// JSON-NEXT: },
-// JSON-NEXT: "end": {
-// JSON-NEXT: "offset": 873,
-// JSON-NEXT: "col": 29,
-// JSON-NEXT: "tokLen": 1
-// JSON-NEXT: }
-// JSON-NEXT: },
-// JSON-NEXT: "type": {
-// JSON-NEXT: "qualType": "int"
-// JSON-NEXT: },
-// JSON-NEXT: "valueCategory": "prvalue",
-// JSON-NEXT: "inner": [
-// JSON-NEXT: {
-// JSON-NEXT: "id": "0x{{.*}}",
-// JSON-NEXT: "kind": "NonTypeTemplateParmDecl",
-// JSON-NEXT: "loc": {
-// JSON-NEXT: "offset": 798,
-// JSON-NEXT: "line": 14,
-// JSON-NEXT: "col": 34,
-// JSON-NEXT: "tokLen": 1
-// JSON-NEXT: },
-// JSON-NEXT: "range": {
-// JSON-NEXT: "begin": {
-// JSON-NEXT: "offset": 794,
-// JSON-NEXT: "col": 30,
-// JSON-NEXT: "tokLen": 3
-// JSON-NEXT: },
-// JSON-NEXT: "end": {
-// JSON-NEXT: "offset": 802,
-// JSON-NEXT: "col": 38,
-// JSON-NEXT: "tokLen": 1
-// JSON-NEXT: }
-// JSON-NEXT: },
-// JSON-NEXT: "isReferenced": true,
-// JSON-NEXT: "name": "Z",
-// JSON-NEXT: "type": {
-// JSON-NEXT: "qualType": "int"
-// JSON-NEXT: },
-// JSON-NEXT: "depth": 0,
-// JSON-NEXT: "index": 2,
-// JSON-NEXT: "defaultArg": {
-// JSON-NEXT: "kind": "TemplateArgument",
-// JSON-NEXT: "isExpr": true
-// JSON-NEXT: },
-// JSON-NEXT: "inner": [
-// JSON-NEXT: {
-// JSON-NEXT: "kind": "TemplateArgument",
-// JSON-NEXT: "range": {
-// JSON-NEXT: "begin": {
-// JSON-NEXT: "offset": 802,
-// JSON-NEXT: "col": 38,
-// JSON-NEXT: "tokLen": 1
-// JSON-NEXT: },
-// JSON-NEXT: "end": {
-// JSON-NEXT: "offset": 802,
-// JSON-NEXT: "col": 38,
-// JSON-NEXT: "tokLen": 1
-// JSON-NEXT: }
-// JSON-NEXT: },
-// JSON-NEXT: "isExpr": true,
-// JSON-NEXT: "inner": [
-// JSON-NEXT: {
-// JSON-NEXT: "id": "0x{{.*}}",
-// JSON-NEXT: "kind": "IntegerLiteral",
-// JSON-NEXT: "range": {
-// JSON-NEXT: "begin": {
-// JSON-NEXT: "offset": 802,
-// JSON-NEXT: "col": 38,
-// JSON-NEXT: "tokLen": 1
-// JSON-NEXT: },
-// JSON-NEXT: "end": {
-// JSON-NEXT: "offset": 802,
-// JSON-NEXT: "col": 38,
-// JSON-NEXT: "tokLen": 1
-// JSON-NEXT: }
-// JSON-NEXT: },
-// JSON-NEXT: "type": {
-// JSON-NEXT: "qualType": "int"
-// JSON-NEXT: },
-// JSON-NEXT: "valueCategory": "prvalue",
-// JSON-NEXT: "value": "5"
-// JSON-NEXT: }
-// JSON-NEXT: ]
-// JSON-NEXT: }
-// JSON-NEXT: ]
-// JSON-NEXT: },
-// JSON-NEXT: {
-// JSON-NEXT: "id": "0x{{.*}}",
-// JSON-NEXT: "kind": "IntegerLiteral",
-// JSON-NEXT: "range": {
-// JSON-NEXT: "begin": {
-// JSON-NEXT: "offset": 873,
-// JSON-NEXT: "line": 18,
-// JSON-NEXT: "col": 29,
-// JSON-NEXT: "tokLen": 1
-// JSON-NEXT: },
-// JSON-NEXT: "end": {
-// JSON-NEXT: "offset": 873,
-// JSON-NEXT: "col": 29,
-// JSON-NEXT: "tokLen": 1
-// JSON-NEXT: }
-// JSON-NEXT: },
-// JSON-NEXT: "type": {
-// JSON-NEXT: "qualType": "int"
-// JSON-NEXT: },
-// JSON-NEXT: "valueCategory": "prvalue",
-// JSON-NEXT: "value": "3"
-// JSON-NEXT: }
-// JSON-NEXT: ]
-// JSON-NEXT: }
-// JSON-NEXT: ]
-// JSON-NEXT: }
-// JSON-NEXT: ]
-// JSON-NEXT: }
-// JSON-NEXT: ]
-// JSON-NEXT: }
-// JSON-NEXT: ]
-// JSON-NEXT: }
-// JSON-NEXT: ]
-// JSON-NEXT: }
-// JSON-NEXT: ]
-// JSON-NEXT: },
-// JSON-NEXT: {
-// JSON-NEXT: "id": "0x{{.*}}",
-// JSON-NEXT: "kind": "CXXConstructorDecl",
-// JSON-NEXT: "loc": {
-// JSON-NEXT: "offset": 812,
-// JSON-NEXT: "line": 15,
-// JSON-NEXT: "col": 8,
-// JSON-NEXT: "tokLen": 3
-// JSON-NEXT: },
-// JSON-NEXT: "range": {
-// JSON-NEXT: "begin": {
-// JSON-NEXT: "offset": 812,
-// JSON-NEXT: "col": 8,
-// JSON-NEXT: "tokLen": 3
-// JSON-NEXT: },
-// JSON-NEXT: "end": {
-// JSON-NEXT: "offset": 812,
-// JSON-NEXT: "col": 8,
-// JSON-NEXT: "tokLen": 3
-// JSON-NEXT: }
-// JSON-NEXT: },
-// JSON-NEXT: "isImplicit": true,
-// JSON-NEXT: "name": "foo",
-// JSON-NEXT: "mangledName": "_ZN3fooILi2EdLi3EEC1ERKS0_",
-// JSON-NEXT: "type": {
-// JSON-NEXT: "qualType": "void (const foo<2, double, 3> &)"
-// JSON-NEXT: },
-// JSON-NEXT: "inline": true,
-// JSON-NEXT: "constexpr": true,
-// JSON-NEXT: "explicitlyDefaulted": "default",
-// JSON-NEXT: "inner": [
-// JSON-NEXT: {
-// JSON-NEXT: "id": "0x{{.*}}",
-// JSON-NEXT: "kind": "ParmVarDecl",
-// JSON-NEXT: "loc": {
-// JSON-NEXT: "offset": 812,
-// JSON-NEXT: "col": 8,
-// JSON-NEXT: "tokLen": 3
-// JSON-NEXT: },
-// JSON-NEXT: "range": {
-// JSON-NEXT: "begin": {
-// JSON-NEXT: "offset": 812,
-// JSON-NEXT: "col": 8,
-// JSON-NEXT: "tokLen": 3
-// JSON-NEXT: },
-// JSON-NEXT: "end": {
-// JSON-NEXT: "offset": 812,
-// JSON-NEXT: "col": 8,
-// JSON-NEXT: "tokLen": 3
-// JSON-NEXT: }
-// JSON-NEXT: },
-// JSON-NEXT: "type": {
-// JSON-NEXT: "qualType": "const foo<2, double, 3> &"
-// JSON-NEXT: }
-// JSON-NEXT: }
-// JSON-NEXT: ]
-// JSON-NEXT: },
-// JSON-NEXT: {
-// JSON-NEXT: "id": "0x{{.*}}",
-// JSON-NEXT: "kind": "CXXConstructorDecl",
-// JSON-NEXT: "loc": {
-// JSON-NEXT: "offset": 812,
-// JSON-NEXT: "col": 8,
-// JSON-NEXT: "tokLen": 3
-// JSON-NEXT: },
-// JSON-NEXT: "range": {
-// JSON-NEXT: "begin": {
-// JSON-NEXT: "offset": 812,
-// JSON-NEXT: "col": 8,
-// JSON-NEXT: "tokLen": 3
-// JSON-NEXT: },
-// JSON-NEXT: "end": {
-// JSON-NEXT: "offset": 812,
-// JSON-NEXT: "col": 8,
-// JSON-NEXT: "tokLen": 3
-// JSON-NEXT: }
-// JSON-NEXT: },
-// JSON-NEXT: "isImplicit": true,
-// JSON-NEXT: "name": "foo",
-// JSON-NEXT: "mangledName": "_ZN3fooILi2EdLi3EEC1EOS0_",
-// JSON-NEXT: "type": {
-// JSON-NEXT: "qualType": "void (foo<2, double, 3> &&)"
-// JSON-NEXT: },
-// JSON-NEXT: "inline": true,
-// JSON-NEXT: "constexpr": true,
-// JSON-NEXT: "explicitlyDefaulted": "default",
-// JSON-NEXT: "inner": [
-// JSON-NEXT: {
-// JSON-NEXT: "id": "0x{{.*}}",
-// JSON-NEXT: "kind": "ParmVarDecl",
-// JSON-NEXT: "loc": {
-// JSON-NEXT: "offset": 812,
-// JSON-NEXT: "col": 8,
-// JSON-NEXT: "tokLen": 3
-// JSON-NEXT: },
-// JSON-NEXT: "range": {
-// JSON-NEXT: "begin": {
-// JSON-NEXT: "offset": 812,
-// JSON-NEXT: "col": 8,
-// JSON-NEXT: "tokLen": 3
-// JSON-NEXT: },
-// JSON-NEXT: "end": {
-// JSON-NEXT: "offset": 812,
-// JSON-NEXT: "col": 8,
-// JSON-NEXT: "tokLen": 3
-// JSON-NEXT: }
-// JSON-NEXT: },
-// JSON-NEXT: "type": {
-// JSON-NEXT: "qualType": "foo<2, double, 3> &&"
-// JSON-NEXT: }
-// JSON-NEXT: }
-// JSON-NEXT: ]
-// JSON-NEXT: },
-// JSON-NEXT: {
-// JSON-NEXT: "id": "0x{{.*}}",
-// JSON-NEXT: "kind": "CXXDestructorDecl",
-// JSON-NEXT: "loc": {
-// JSON-NEXT: "offset": 812,
-// JSON-NEXT: "col": 8,
-// JSON-NEXT: "tokLen": 3
-// JSON-NEXT: },
-// JSON-NEXT: "range": {
-// JSON-NEXT: "begin": {
-// JSON-NEXT: "offset": 812,
-// JSON-NEXT: "col": 8,
-// JSON-NEXT: "tokLen": 3
-// JSON-NEXT: },
-// JSON-NEXT: "end": {
-// JSON-NEXT: "offset": 812,
-// JSON-NEXT: "col": 8,
-// JSON-NEXT: "tokLen": 3
-// JSON-NEXT: }
-// JSON-NEXT: },
-// JSON-NEXT: "isImplicit": true,
-// JSON-NEXT: "isReferenced": true,
-// JSON-NEXT: "name": "~foo",
-// JSON-NEXT: "mangledName": "_ZN3fooILi2EdLi3EED1Ev",
-// JSON-NEXT: "type": {
-// JSON-NEXT: "qualType": "void () noexcept"
-// JSON-NEXT: },
-// JSON-NEXT: "inline": true,
-// JSON-NEXT: "explicitlyDefaulted": "default"
-// JSON-NEXT: }
-// JSON-NEXT: ]
-// JSON-NEXT: }
-// JSON-NEXT: ]
-// JSON-NEXT: },
-// JSON-NEXT: {
-// JSON-NEXT: "id": "0x{{.*}}",
-// JSON-NEXT: "kind": "FunctionTemplateDecl",
-// JSON-NEXT: "loc": {
-// JSON-NEXT: "offset": 914,
-// JSON-NEXT: "line": 22,
-// JSON-NEXT: "col": 3,
-// JSON-NEXT: "tokLen": 3
-// JSON-NEXT: },
-// JSON-NEXT: "range": {
-// JSON-NEXT: "begin": {
-// JSON-NEXT: "offset": 883,
-// JSON-NEXT: "line": 21,
-// JSON-NEXT: "col": 1,
-// JSON-NEXT: "tokLen": 8
-// JSON-NEXT: },
-// JSON-NEXT: "end": {
-// JSON-NEXT: "offset": 937,
-// JSON-NEXT: "line": 24,
-// JSON-NEXT: "col": 1,
-// JSON-NEXT: "tokLen": 1
-// JSON-NEXT: }
-// JSON-NEXT: },
-// JSON-NEXT: "name": "bar",
-// JSON-NEXT: "inner": [
-// JSON-NEXT: {
-// JSON-NEXT: "id": "0x{{.*}}",
-// JSON-NEXT: "kind": "NonTypeTemplateParmDecl",
-// JSON-NEXT: "loc": {
-// JSON-NEXT: "offset": 897,
-// JSON-NEXT: "line": 21,
-// JSON-NEXT: "col": 15,
-// JSON-NEXT: "tokLen": 1
-// JSON-NEXT: },
-// JSON-NEXT: "range": {
-// JSON-NEXT: "begin": {
-// JSON-NEXT: "offset": 893,
-// JSON-NEXT: "col": 11,
-// JSON-NEXT: "tokLen": 3
-// JSON-NEXT: },
-// JSON-NEXT: "end": {
-// JSON-NEXT: "offset": 897,
-// JSON-NEXT: "col": 15,
-// JSON-NEXT: "tokLen": 1
-// JSON-NEXT: }
-// JSON-NEXT: },
-// JSON-NEXT: "isReferenced": true,
-// JSON-NEXT: "name": "A",
-// JSON-NEXT: "type": {
-// JSON-NEXT: "qualType": "int"
-// JSON-NEXT: },
-// JSON-NEXT: "depth": 0,
-// JSON-NEXT: "index": 0
-// JSON-NEXT: },
-// JSON-NEXT: {
-// JSON-NEXT: "id": "0x{{.*}}",
-// JSON-NEXT: "kind": "TemplateTypeParmDecl",
-// JSON-NEXT: "loc": {
-// JSON-NEXT: "offset": 909,
-// JSON-NEXT: "col": 27,
-// JSON-NEXT: "tokLen": 1
-// JSON-NEXT: },
-// JSON-NEXT: "range": {
-// JSON-NEXT: "begin": {
-// JSON-NEXT: "offset": 900,
-// JSON-NEXT: "col": 18,
-// JSON-NEXT: "tokLen": 8
-// JSON-NEXT: },
-// JSON-NEXT: "end": {
-// JSON-NEXT: "offset": 909,
-// JSON-NEXT: "col": 27,
-// JSON-NEXT: "tokLen": 1
-// JSON-NEXT: }
-// JSON-NEXT: },
-// JSON-NEXT: "isReferenced": true,
-// JSON-NEXT: "name": "B",
-// JSON-NEXT: "tagUsed": "typename",
-// JSON-NEXT: "depth": 0,
-// JSON-NEXT: "index": 1
-// JSON-NEXT: },
-// JSON-NEXT: {
-// JSON-NEXT: "id": "0x{{.*}}",
-// JSON-NEXT: "kind": "FunctionDecl",
-// JSON-NEXT: "loc": {
-// JSON-NEXT: "offset": 914,
-// JSON-NEXT: "line": 22,
-// JSON-NEXT: "col": 3,
-// JSON-NEXT: "tokLen": 3
-// JSON-NEXT: },
-// JSON-NEXT: "range": {
-// JSON-NEXT: "begin": {
-// JSON-NEXT: "offset": 912,
-// JSON-NEXT: "col": 1,
-// JSON-NEXT: "tokLen": 1
-// JSON-NEXT: },
-// JSON-NEXT: "end": {
-// JSON-NEXT: "offset": 937,
-// JSON-NEXT: "line": 24,
-// JSON-NEXT: "col": 1,
-// JSON-NEXT: "tokLen": 1
-// JSON-NEXT: }
-// JSON-NEXT: },
-// JSON-NEXT: "name": "bar",
-// JSON-NEXT: "type": {
-// JSON-NEXT: "qualType": "B ()"
-// JSON-NEXT: },
-// JSON-NEXT: "inner": [
-// JSON-NEXT: {
-// JSON-NEXT: "id": "0x{{.*}}",
-// JSON-NEXT: "kind": "CompoundStmt",
-// JSON-NEXT: "range": {
-// JSON-NEXT: "begin": {
-// JSON-NEXT: "offset": 920,
-// JSON-NEXT: "line": 22,
-// JSON-NEXT: "col": 9,
-// JSON-NEXT: "tokLen": 1
-// JSON-NEXT: },
-// JSON-NEXT: "end": {
-// JSON-NEXT: "offset": 937,
-// JSON-NEXT: "line": 24,
-// JSON-NEXT: "col": 1,
-// JSON-NEXT: "tokLen": 1
-// JSON-NEXT: }
-// JSON-NEXT: },
-// JSON-NEXT: "inner": [
-// JSON-NEXT: {
-// JSON-NEXT: "id": "0x{{.*}}",
-// JSON-NEXT: "kind": "ReturnStmt",
-// JSON-NEXT: "range": {
-// JSON-NEXT: "begin": {
-// JSON-NEXT: "offset": 924,
-// JSON-NEXT: "line": 23,
-// JSON-NEXT: "col": 3,
-// JSON-NEXT: "tokLen": 6
-// JSON-NEXT: },
-// JSON-NEXT: "end": {
-// JSON-NEXT: "offset": 934,
-// JSON-NEXT: "col": 13,
-// JSON-NEXT: "tokLen": 1
-// JSON-NEXT: }
-// JSON-NEXT: },
-// JSON-NEXT: "inner": [
-// JSON-NEXT: {
-// JSON-NEXT: "id": "0x{{.*}}",
-// JSON-NEXT: "kind": "CXXUnresolvedConstructExpr",
-// JSON-NEXT: "range": {
-// JSON-NEXT: "begin": {
-// JSON-NEXT: "offset": 931,
-// JSON-NEXT: "col": 10,
-// JSON-NEXT: "tokLen": 1
-// JSON-NEXT: },
-// JSON-NEXT: "end": {
-// JSON-NEXT: "offset": 934,
-// JSON-NEXT: "col": 13,
-// JSON-NEXT: "tokLen": 1
-// JSON-NEXT: }
-// JSON-NEXT: },
-// JSON-NEXT: "type": {
-// JSON-NEXT: "qualType": "B"
-// JSON-NEXT: },
-// JSON-NEXT: "valueCategory": "prvalue",
-// JSON-NEXT: "inner": [
-// JSON-NEXT: {
-// JSON-NEXT: "id": "0x{{.*}}",
-// JSON-NEXT: "kind": "DeclRefExpr",
-// JSON-NEXT: "range": {
-// JSON-NEXT: "begin": {
-// JSON-NEXT: "offset": 933,
-// JSON-NEXT: "col": 12,
-// JSON-NEXT: "tokLen": 1
-// JSON-NEXT: },
-// JSON-NEXT: "end": {
-// JSON-NEXT: "offset": 933,
-// JSON-NEXT: "col": 12,
-// JSON-NEXT: "tokLen": 1
-// JSON-NEXT: }
-// JSON-NEXT: },
-// JSON-NEXT: "type": {
-// JSON-NEXT: "qualType": "int"
-// JSON-NEXT: },
-// JSON-NEXT: "valueCategory": "prvalue",
-// JSON-NEXT: "referencedDecl": {
-// JSON-NEXT: "id": "0x{{.*}}",
-// JSON-NEXT: "kind": "NonTypeTemplateParmDecl",
-// JSON-NEXT: "name": "A",
-// JSON-NEXT: "type": {
-// JSON-NEXT: "qualType": "int"
-// JSON-NEXT: }
-// JSON-NEXT: }
-// JSON-NEXT: }
-// JSON-NEXT: ]
-// JSON-NEXT: }
-// JSON-NEXT: ]
-// JSON-NEXT: }
-// JSON-NEXT: ]
-// JSON-NEXT: }
-// JSON-NEXT: ]
-// JSON-NEXT: },
-// JSON-NEXT: {
-// JSON-NEXT: "id": "0x{{.*}}",
-// JSON-NEXT: "kind": "FunctionDecl",
-// JSON-NEXT: "loc": {
-// JSON-NEXT: "offset": 914,
-// JSON-NEXT: "line": 22,
-// JSON-NEXT: "col": 3,
-// JSON-NEXT: "tokLen": 3
-// JSON-NEXT: },
-// JSON-NEXT: "range": {
-// JSON-NEXT: "begin": {
-// JSON-NEXT: "offset": 912,
-// JSON-NEXT: "col": 1,
-// JSON-NEXT: "tokLen": 1
-// JSON-NEXT: },
-// JSON-NEXT: "end": {
-// JSON-NEXT: "offset": 937,
-// JSON-NEXT: "line": 24,
-// JSON-NEXT: "col": 1,
-// JSON-NEXT: "tokLen": 1
-// JSON-NEXT: }
-// JSON-NEXT: },
-// JSON-NEXT: "isUsed": true,
-// JSON-NEXT: "name": "bar",
-// JSON-NEXT: "mangledName": "_Z3barILi5EiET0_v",
-// JSON-NEXT: "type": {
-// JSON-NEXT: "qualType": "int ()"
-// JSON-NEXT: },
-// JSON-NEXT: "inner": [
-// JSON-NEXT: {
-// JSON-NEXT: "kind": "TemplateArgument",
-// JSON-NEXT: "value": 5
-// JSON-NEXT: },
-// JSON-NEXT: {
-// JSON-NEXT: "kind": "TemplateArgument",
-// JSON-NEXT: "type": {
-// JSON-NEXT: "qualType": "int"
-// JSON-NEXT: },
-// JSON-NEXT: "inner": [
-// JSON-NEXT: {
-// JSON-NEXT: "id": "0x{{.*}}",
-// JSON-NEXT: "kind": "BuiltinType",
-// JSON-NEXT: "type": {
-// JSON-NEXT: "qualType": "int"
-// JSON-NEXT: }
-// JSON-NEXT: }
-// JSON-NEXT: ]
-// JSON-NEXT: },
-// JSON-NEXT: {
-// JSON-NEXT: "id": "0x{{.*}}",
-// JSON-NEXT: "kind": "CompoundStmt",
-// JSON-NEXT: "range": {
-// JSON-NEXT: "begin": {
-// JSON-NEXT: "offset": 920,
-// JSON-NEXT: "line": 22,
-// JSON-NEXT: "col": 9,
-// JSON-NEXT: "tokLen": 1
-// JSON-NEXT: },
-// JSON-NEXT: "end": {
-// JSON-NEXT: "offset": 937,
-// JSON-NEXT: "line": 24,
-// JSON-NEXT: "col": 1,
-// JSON-NEXT: "tokLen": 1
-// JSON-NEXT: }
-// JSON-NEXT: },
-// JSON-NEXT: "inner": [
-// JSON-NEXT: {
-// JSON-NEXT: "id": "0x{{.*}}",
-// JSON-NEXT: "kind": "ReturnStmt",
-// JSON-NEXT: "range": {
-// JSON-NEXT: "begin": {
-// JSON-NEXT: "offset": 924,
-// JSON-NEXT: "line": 23,
-// JSON-NEXT: "col": 3,
-// JSON-NEXT: "tokLen": 6
-// JSON-NEXT: },
-// JSON-NEXT: "end": {
-// JSON-NEXT: "offset": 934,
-// JSON-NEXT: "col": 13,
-// JSON-NEXT: "tokLen": 1
-// JSON-NEXT: }
-// JSON-NEXT: },
-// JSON-NEXT: "inner": [
-// JSON-NEXT: {
-// JSON-NEXT: "id": "0x{{.*}}",
-// JSON-NEXT: "kind": "CXXFunctionalCastExpr",
-// JSON-NEXT: "range": {
-// JSON-NEXT: "begin": {
-// JSON-NEXT: "offset": 931,
-// JSON-NEXT: "col": 10,
-// JSON-NEXT: "tokLen": 1
-// JSON-NEXT: },
-// JSON-NEXT: "end": {
-// JSON-NEXT: "offset": 934,
-// JSON-NEXT: "col": 13,
-// JSON-NEXT: "tokLen": 1
-// JSON-NEXT: }
-// JSON-NEXT: },
-// JSON-NEXT: "type": {
-// JSON-NEXT: "qualType": "int"
-// JSON-NEXT: },
-// JSON-NEXT: "valueCategory": "prvalue",
-// JSON-NEXT: "castKind": "NoOp",
-// JSON-NEXT: "inner": [
-// JSON-NEXT: {
-// JSON-NEXT: "id": "0x{{.*}}",
-// JSON-NEXT: "kind": "SubstNonTypeTemplateParmExpr",
-// JSON-NEXT: "range": {
-// JSON-NEXT: "begin": {
-// JSON-NEXT: "offset": 933,
-// JSON-NEXT: "col": 12,
-// JSON-NEXT: "tokLen": 1
-// JSON-NEXT: },
-// JSON-NEXT: "end": {
-// JSON-NEXT: "offset": 933,
-// JSON-NEXT: "col": 12,
-// JSON-NEXT: "tokLen": 1
-// JSON-NEXT: }
-// JSON-NEXT: },
-// JSON-NEXT: "type": {
-// JSON-NEXT: "qualType": "int"
-// JSON-NEXT: },
-// JSON-NEXT: "valueCategory": "prvalue",
-// JSON-NEXT: "inner": [
-// JSON-NEXT: {
-// JSON-NEXT: "id": "0x{{.*}}",
-// JSON-NEXT: "kind": "NonTypeTemplateParmDecl",
-// JSON-NEXT: "loc": {
-// JSON-NEXT: "offset": 897,
-// JSON-NEXT: "line": 21,
-// JSON-NEXT: "col": 15,
-// JSON-NEXT: "tokLen": 1
-// JSON-NEXT: },
-// JSON-NEXT: "range": {
-// JSON-NEXT: "begin": {
-// JSON-NEXT: "offset": 893,
-// JSON-NEXT: "col": 11,
-// JSON-NEXT: "tokLen": 3
-// JSON-NEXT: },
-// JSON-NEXT: "end": {
-// JSON-NEXT: "offset": 897,
-// JSON-NEXT: "col": 15,
-// JSON-NEXT: "tokLen": 1
-// JSON-NEXT: }
-// JSON-NEXT: },
-// JSON-NEXT: "isReferenced": true,
-// JSON-NEXT: "name": "A",
-// JSON-NEXT: "type": {
-// JSON-NEXT: "qualType": "int"
-// JSON-NEXT: },
-// JSON-NEXT: "depth": 0,
-// JSON-NEXT: "index": 0
-// JSON-NEXT: },
-// JSON-NEXT: {
-// JSON-NEXT: "id": "0x{{.*}}",
-// JSON-NEXT: "kind": "IntegerLiteral",
-// JSON-NEXT: "range": {
-// JSON-NEXT: "begin": {
-// JSON-NEXT: "offset": 933,
-// JSON-NEXT: "line": 23,
-// JSON-NEXT: "col": 12,
-// JSON-NEXT: "tokLen": 1
-// JSON-NEXT: },
-// JSON-NEXT: "end": {
-// JSON-NEXT: "offset": 933,
-// JSON-NEXT: "col": 12,
-// JSON-NEXT: "tokLen": 1
-// JSON-NEXT: }
-// JSON-NEXT: },
-// JSON-NEXT: "type": {
-// JSON-NEXT: "qualType": "int"
-// JSON-NEXT: },
-// JSON-NEXT: "valueCategory": "prvalue",
-// JSON-NEXT: "value": "5"
-// JSON-NEXT: }
-// JSON-NEXT: ]
-// JSON-NEXT: }
-// JSON-NEXT: ]
-// JSON-NEXT: }
-// JSON-NEXT: ]
-// JSON-NEXT: }
-// JSON-NEXT: ]
-// JSON-NEXT: }
-// JSON-NEXT: ]
-// JSON-NEXT: }
-// JSON-NEXT: ]
-// JSON-NEXT: },
-// JSON-NEXT: {
-// JSON-NEXT: "id": "0x{{.*}}",
-// JSON-NEXT: "kind": "FunctionDecl",
-// JSON-NEXT: "loc": {
-// JSON-NEXT: "offset": 945,
-// JSON-NEXT: "line": 26,
-// JSON-NEXT: "col": 6,
-// JSON-NEXT: "tokLen": 3
-// JSON-NEXT: },
-// JSON-NEXT: "range": {
-// JSON-NEXT: "begin": {
-// JSON-NEXT: "offset": 940,
-// JSON-NEXT: "col": 1,
-// JSON-NEXT: "tokLen": 4
-// JSON-NEXT: },
-// JSON-NEXT: "end": {
-// JSON-NEXT: "offset": 1055,
-// JSON-NEXT: "line": 30,
-// JSON-NEXT: "col": 1,
-// JSON-NEXT: "tokLen": 1
-// JSON-NEXT: }
-// JSON-NEXT: },
-// JSON-NEXT: "name": "baz",
-// JSON-NEXT: "mangledName": "_Z3bazv",
-// JSON-NEXT: "type": {
-// JSON-NEXT: "qualType": "void ()"
-// JSON-NEXT: },
-// JSON-NEXT: "inner": [
-// JSON-NEXT: {
-// JSON-NEXT: "id": "0x{{.*}}",
-// JSON-NEXT: "kind": "CompoundStmt",
-// JSON-NEXT: "range": {
-// JSON-NEXT: "begin": {
-// JSON-NEXT: "offset": 951,
-// JSON-NEXT: "line": 26,
-// JSON-NEXT: "col": 12,
-// JSON-NEXT: "tokLen": 1
-// JSON-NEXT: },
-// JSON-NEXT: "end": {
-// JSON-NEXT: "offset": 1055,
-// JSON-NEXT: "line": 30,
-// JSON-NEXT: "col": 1,
-// JSON-NEXT: "tokLen": 1
-// JSON-NEXT: }
-// JSON-NEXT: },
-// JSON-NEXT: "inner": [
-// JSON-NEXT: {
-// JSON-NEXT: "id": "0x{{.*}}",
-// JSON-NEXT: "kind": "DeclStmt",
-// JSON-NEXT: "range": {
-// JSON-NEXT: "begin": {
-// JSON-NEXT: "offset": 955,
-// JSON-NEXT: "line": 27,
-// JSON-NEXT: "col": 3,
-// JSON-NEXT: "tokLen": 3
-// JSON-NEXT: },
-// JSON-NEXT: "end": {
-// JSON-NEXT: "offset": 976,
-// JSON-NEXT: "col": 24,
-// JSON-NEXT: "tokLen": 1
-// JSON-NEXT: }
-// JSON-NEXT: },
-// JSON-NEXT: "inner": [
-// JSON-NEXT: {
-// JSON-NEXT: "id": "0x{{.*}}",
-// JSON-NEXT: "kind": "VarDecl",
-// JSON-NEXT: "loc": {
-// JSON-NEXT: "offset": 959,
-// JSON-NEXT: "col": 7,
-// JSON-NEXT: "tokLen": 1
-// JSON-NEXT: },
-// JSON-NEXT: "range": {
-// JSON-NEXT: "begin": {
-// JSON-NEXT: "offset": 955,
-// JSON-NEXT: "col": 3,
-// JSON-NEXT: "tokLen": 3
-// JSON-NEXT: },
-// JSON-NEXT: "end": {
-// JSON-NEXT: "offset": 975,
-// JSON-NEXT: "col": 23,
-// JSON-NEXT: "tokLen": 1
-// JSON-NEXT: }
-// JSON-NEXT: },
-// JSON-NEXT: "name": "x",
-// JSON-NEXT: "type": {
-// JSON-NEXT: "qualType": "int"
-// JSON-NEXT: },
-// JSON-NEXT: "init": "c",
-// JSON-NEXT: "inner": [
-// JSON-NEXT: {
-// JSON-NEXT: "id": "0x{{.*}}",
-// JSON-NEXT: "kind": "CallExpr",
-// JSON-NEXT: "range": {
-// JSON-NEXT: "begin": {
-// JSON-NEXT: "offset": 963,
-// JSON-NEXT: "col": 11,
-// JSON-NEXT: "tokLen": 3
-// JSON-NEXT: },
-// JSON-NEXT: "end": {
-// JSON-NEXT: "offset": 975,
-// JSON-NEXT: "col": 23,
-// JSON-NEXT: "tokLen": 1
-// JSON-NEXT: }
-// JSON-NEXT: },
-// JSON-NEXT: "type": {
-// JSON-NEXT: "qualType": "int"
-// JSON-NEXT: },
-// JSON-NEXT: "valueCategory": "prvalue",
-// JSON-NEXT: "inner": [
-// JSON-NEXT: {
-// JSON-NEXT: "id": "0x{{.*}}",
-// JSON-NEXT: "kind": "ImplicitCastExpr",
-// JSON-NEXT: "range": {
-// JSON-NEXT: "begin": {
-// JSON-NEXT: "offset": 963,
-// JSON-NEXT: "col": 11,
-// JSON-NEXT: "tokLen": 3
-// JSON-NEXT: },
-// JSON-NEXT: "end": {
-// JSON-NEXT: "offset": 973,
-// JSON-NEXT: "col": 21,
-// JSON-NEXT: "tokLen": 1
-// JSON-NEXT: }
-// JSON-NEXT: },
-// JSON-NEXT: "type": {
-// JSON-NEXT: "qualType": "int (*)()"
-// JSON-NEXT: },
-// JSON-NEXT: "valueCategory": "prvalue",
-// JSON-NEXT: "castKind": "FunctionToPointerDecay",
-// JSON-NEXT: "inner": [
-// JSON-NEXT: {
-// JSON-NEXT: "id": "0x{{.*}}",
-// JSON-NEXT: "kind": "DeclRefExpr",
-// JSON-NEXT: "range": {
-// JSON-NEXT: "begin": {
-// JSON-NEXT: "offset": 963,
-// JSON-NEXT: "col": 11,
-// JSON-NEXT: "tokLen": 3
-// JSON-NEXT: },
-// JSON-NEXT: "end": {
-// JSON-NEXT: "offset": 973,
-// JSON-NEXT: "col": 21,
-// JSON-NEXT: "tokLen": 1
-// JSON-NEXT: }
-// JSON-NEXT: },
-// JSON-NEXT: "type": {
-// JSON-NEXT: "qualType": "int ()"
-// JSON-NEXT: },
-// JSON-NEXT: "valueCategory": "lvalue",
-// JSON-NEXT: "referencedDecl": {
-// JSON-NEXT: "id": "0x{{.*}}",
-// JSON-NEXT: "kind": "FunctionDecl",
-// JSON-NEXT: "name": "bar",
-// JSON-NEXT: "type": {
-// JSON-NEXT: "qualType": "int ()"
-// JSON-NEXT: }
-// JSON-NEXT: },
-// JSON-NEXT: "foundReferencedDecl": {
-// JSON-NEXT: "id": "0x{{.*}}",
-// JSON-NEXT: "kind": "FunctionTemplateDecl",
-// JSON-NEXT: "name": "bar"
-// JSON-NEXT: }
-// JSON-NEXT: }
-// JSON-NEXT: ]
-// JSON-NEXT: }
-// JSON-NEXT: ]
-// JSON-NEXT: }
-// JSON-NEXT: ]
-// JSON-NEXT: }
-// JSON-NEXT: ]
-// JSON-NEXT: },
-// JSON-NEXT: {
-// JSON-NEXT: "id": "0x{{.*}}",
-// JSON-NEXT: "kind": "DeclStmt",
-// JSON-NEXT: "range": {
-// JSON-NEXT: "begin": {
-// JSON-NEXT: "offset": 980,
-// JSON-NEXT: "line": 28,
-// JSON-NEXT: "col": 3,
-// JSON-NEXT: "tokLen": 3
-// JSON-NEXT: },
-// JSON-NEXT: "end": {
-// JSON-NEXT: "offset": 1010,
-// JSON-NEXT: "col": 33,
-// JSON-NEXT: "tokLen": 1
-// JSON-NEXT: }
-// JSON-NEXT: },
-// JSON-NEXT: "inner": [
-// JSON-NEXT: {
-// JSON-NEXT: "id": "0x{{.*}}",
-// JSON-NEXT: "kind": "VarDecl",
-// JSON-NEXT: "loc": {
-// JSON-NEXT: "offset": 984,
-// JSON-NEXT: "col": 7,
-// JSON-NEXT: "tokLen": 1
-// JSON-NEXT: },
-// JSON-NEXT: "range": {
-// JSON-NEXT: "begin": {
-// JSON-NEXT: "offset": 980,
-// JSON-NEXT: "col": 3,
-// JSON-NEXT: "tokLen": 3
-// JSON-NEXT: },
-// JSON-NEXT: "end": {
-// JSON-NEXT: "offset": 1009,
-// JSON-NEXT: "col": 32,
-// JSON-NEXT: "tokLen": 1
-// JSON-NEXT: }
-// JSON-NEXT: },
-// JSON-NEXT: "name": "y",
-// JSON-NEXT: "type": {
-// JSON-NEXT: "qualType": "int"
-// JSON-NEXT: },
-// JSON-NEXT: "init": "c",
-// JSON-NEXT: "inner": [
-// JSON-NEXT: {
-// JSON-NEXT: "id": "0x{{.*}}",
-// JSON-NEXT: "kind": "ExprWithCleanups",
-// JSON-NEXT: "range": {
-// JSON-NEXT: "begin": {
-// JSON-NEXT: "offset": 988,
-// JSON-NEXT: "col": 11,
-// JSON-NEXT: "tokLen": 3
-// JSON-NEXT: },
-// JSON-NEXT: "end": {
-// JSON-NEXT: "offset": 1009,
-// JSON-NEXT: "col": 32,
-// JSON-NEXT: "tokLen": 1
-// JSON-NEXT: }
-// JSON-NEXT: },
-// JSON-NEXT: "type": {
-// JSON-NEXT: "qualType": "int"
-// JSON-NEXT: },
-// JSON-NEXT: "valueCategory": "prvalue",
-// JSON-NEXT: "inner": [
-// JSON-NEXT: {
-// JSON-NEXT: "id": "0x{{.*}}",
-// JSON-NEXT: "kind": "CXXMemberCallExpr",
-// JSON-NEXT: "range": {
-// JSON-NEXT: "begin": {
-// JSON-NEXT: "offset": 988,
-// JSON-NEXT: "col": 11,
-// JSON-NEXT: "tokLen": 3
-// JSON-NEXT: },
-// JSON-NEXT: "end": {
-// JSON-NEXT: "offset": 1009,
-// JSON-NEXT: "col": 32,
-// JSON-NEXT: "tokLen": 1
-// JSON-NEXT: }
-// JSON-NEXT: },
-// JSON-NEXT: "type": {
-// JSON-NEXT: "qualType": "int"
-// JSON-NEXT: },
-// JSON-NEXT: "valueCategory": "prvalue",
-// JSON-NEXT: "inner": [
-// JSON-NEXT: {
-// JSON-NEXT: "id": "0x{{.*}}",
-// JSON-NEXT: "kind": "MemberExpr",
-// JSON-NEXT: "range": {
-// JSON-NEXT: "begin": {
-// JSON-NEXT: "offset": 988,
-// JSON-NEXT: "col": 11,
-// JSON-NEXT: "tokLen": 3
-// JSON-NEXT: },
-// JSON-NEXT: "end": {
-// JSON-NEXT: "offset": 1002,
-// JSON-NEXT: "col": 25,
-// JSON-NEXT: "tokLen": 6
-// JSON-NEXT: }
-// JSON-NEXT: },
-// JSON-NEXT: "type": {
-// JSON-NEXT: "qualType": "<bound member function type>"
-// JSON-NEXT: },
-// JSON-NEXT: "valueCategory": "prvalue",
-// JSON-NEXT: "name": "getSum",
-// JSON-NEXT: "isArrow": false,
-// JSON-NEXT: "referencedMemberDecl": "0x{{.*}}",
-// JSON-NEXT: "inner": [
-// JSON-NEXT: {
-// JSON-NEXT: "id": "0x{{.*}}",
-// JSON-NEXT: "kind": "MaterializeTemporaryExpr",
-// JSON-NEXT: "range": {
-// JSON-NEXT: "begin": {
-// JSON-NEXT: "offset": 988,
-// JSON-NEXT: "col": 11,
-// JSON-NEXT: "tokLen": 3
-// JSON-NEXT: },
-// JSON-NEXT: "end": {
-// JSON-NEXT: "offset": 1000,
-// JSON-NEXT: "col": 23,
-// JSON-NEXT: "tokLen": 1
-// JSON-NEXT: }
-// JSON-NEXT: },
-// JSON-NEXT: "type": {
-// JSON-NEXT: "qualType": "foo<5, int>"
-// JSON-NEXT: },
-// JSON-NEXT: "valueCategory": "xvalue",
-// JSON-NEXT: "storageDuration": "full expression",
-// JSON-NEXT: "inner": [
-// JSON-NEXT: {
-// JSON-NEXT: "id": "0x{{.*}}",
-// JSON-NEXT: "kind": "CXXTemporaryObjectExpr",
-// JSON-NEXT: "range": {
-// JSON-NEXT: "begin": {
-// JSON-NEXT: "offset": 988,
-// JSON-NEXT: "col": 11,
-// JSON-NEXT: "tokLen": 3
-// JSON-NEXT: },
-// JSON-NEXT: "end": {
-// JSON-NEXT: "offset": 1000,
-// JSON-NEXT: "col": 23,
-// JSON-NEXT: "tokLen": 1
-// JSON-NEXT: }
-// JSON-NEXT: },
-// JSON-NEXT: "type": {
-// JSON-NEXT: "qualType": "foo<5, int>"
-// JSON-NEXT: },
-// JSON-NEXT: "valueCategory": "prvalue",
-// JSON-NEXT: "ctorType": {
-// JSON-NEXT: "qualType": "void ()"
-// JSON-NEXT: },
-// JSON-NEXT: "hadMultipleCandidates": true,
-// JSON-NEXT: "constructionKind": "complete"
-// JSON-NEXT: }
-// JSON-NEXT: ]
-// JSON-NEXT: }
-// JSON-NEXT: ]
-// JSON-NEXT: }
-// JSON-NEXT: ]
-// JSON-NEXT: }
-// JSON-NEXT: ]
-// JSON-NEXT: }
-// JSON-NEXT: ]
-// JSON-NEXT: }
-// JSON-NEXT: ]
-// JSON-NEXT: },
-// JSON-NEXT: {
-// JSON-NEXT: "id": "0x{{.*}}",
-// JSON-NEXT: "kind": "DeclStmt",
-// JSON-NEXT: "range": {
-// JSON-NEXT: "begin": {
-// JSON-NEXT: "offset": 1014,
-// JSON-NEXT: "line": 29,
-// JSON-NEXT: "col": 3,
-// JSON-NEXT: "tokLen": 6
-// JSON-NEXT: },
-// JSON-NEXT: "end": {
-// JSON-NEXT: "offset": 1053,
-// JSON-NEXT: "col": 42,
-// JSON-NEXT: "tokLen": 1
-// JSON-NEXT: }
-// JSON-NEXT: },
-// JSON-NEXT: "inner": [
-// JSON-NEXT: {
-// JSON-NEXT: "id": "0x{{.*}}",
-// JSON-NEXT: "kind": "VarDecl",
-// JSON-NEXT: "loc": {
-// JSON-NEXT: "offset": 1021,
-// JSON-NEXT: "col": 10,
-// JSON-NEXT: "tokLen": 1
-// JSON-NEXT: },
-// JSON-NEXT: "range": {
-// JSON-NEXT: "begin": {
-// JSON-NEXT: "offset": 1014,
-// JSON-NEXT: "col": 3,
-// JSON-NEXT: "tokLen": 6
-// JSON-NEXT: },
-// JSON-NEXT: "end": {
-// JSON-NEXT: "offset": 1052,
-// JSON-NEXT: "col": 41,
-// JSON-NEXT: "tokLen": 1
-// JSON-NEXT: }
-// JSON-NEXT: },
-// JSON-NEXT: "name": "z",
-// JSON-NEXT: "type": {
-// JSON-NEXT: "qualType": "double"
-// JSON-NEXT: },
-// JSON-NEXT: "init": "c",
-// JSON-NEXT: "inner": [
-// JSON-NEXT: {
-// JSON-NEXT: "id": "0x{{.*}}",
-// JSON-NEXT: "kind": "ExprWithCleanups",
-// JSON-NEXT: "range": {
-// JSON-NEXT: "begin": {
-// JSON-NEXT: "offset": 1025,
-// JSON-NEXT: "col": 14,
-// JSON-NEXT: "tokLen": 3
-// JSON-NEXT: },
-// JSON-NEXT: "end": {
-// JSON-NEXT: "offset": 1052,
-// JSON-NEXT: "col": 41,
-// JSON-NEXT: "tokLen": 1
-// JSON-NEXT: }
-// JSON-NEXT: },
-// JSON-NEXT: "type": {
-// JSON-NEXT: "qualType": "double"
-// JSON-NEXT: },
-// JSON-NEXT: "valueCategory": "prvalue",
-// JSON-NEXT: "inner": [
-// JSON-NEXT: {
-// JSON-NEXT: "id": "0x{{.*}}",
-// JSON-NEXT: "kind": "CXXMemberCallExpr",
-// JSON-NEXT: "range": {
-// JSON-NEXT: "begin": {
-// JSON-NEXT: "offset": 1025,
-// JSON-NEXT: "col": 14,
-// JSON-NEXT: "tokLen": 3
-// JSON-NEXT: },
-// JSON-NEXT: "end": {
-// JSON-NEXT: "offset": 1052,
-// JSON-NEXT: "col": 41,
-// JSON-NEXT: "tokLen": 1
-// JSON-NEXT: }
-// JSON-NEXT: },
-// JSON-NEXT: "type": {
-// JSON-NEXT: "qualType": "double"
-// JSON-NEXT: },
-// JSON-NEXT: "valueCategory": "prvalue",
-// JSON-NEXT: "inner": [
-// JSON-NEXT: {
-// JSON-NEXT: "id": "0x{{.*}}",
-// JSON-NEXT: "kind": "MemberExpr",
-// JSON-NEXT: "range": {
-// JSON-NEXT: "begin": {
-// JSON-NEXT: "offset": 1025,
-// JSON-NEXT: "col": 14,
-// JSON-NEXT: "tokLen": 3
-// JSON-NEXT: },
-// JSON-NEXT: "end": {
-// JSON-NEXT: "offset": 1045,
-// JSON-NEXT: "col": 34,
-// JSON-NEXT: "tokLen": 6
-// JSON-NEXT: }
-// JSON-NEXT: },
-// JSON-NEXT: "type": {
-// JSON-NEXT: "qualType": "<bound member function type>"
-// JSON-NEXT: },
-// JSON-NEXT: "valueCategory": "prvalue",
-// JSON-NEXT: "name": "getSum",
-// JSON-NEXT: "isArrow": false,
-// JSON-NEXT: "referencedMemberDecl": "0x{{.*}}",
-// JSON-NEXT: "inner": [
-// JSON-NEXT: {
-// JSON-NEXT: "id": "0x{{.*}}",
-// JSON-NEXT: "kind": "MaterializeTemporaryExpr",
-// JSON-NEXT: "range": {
-// JSON-NEXT: "begin": {
-// JSON-NEXT: "offset": 1025,
-// JSON-NEXT: "col": 14,
-// JSON-NEXT: "tokLen": 3
-// JSON-NEXT: },
-// JSON-NEXT: "end": {
-// JSON-NEXT: "offset": 1043,
-// JSON-NEXT: "col": 32,
-// JSON-NEXT: "tokLen": 1
-// JSON-NEXT: }
-// JSON-NEXT: },
-// JSON-NEXT: "type": {
-// JSON-NEXT: "qualType": "foo<2, double, 3>"
-// JSON-NEXT: },
-// JSON-NEXT: "valueCategory": "xvalue",
-// JSON-NEXT: "storageDuration": "full expression",
-// JSON-NEXT: "inner": [
-// JSON-NEXT: {
-// JSON-NEXT: "id": "0x{{.*}}",
-// JSON-NEXT: "kind": "CXXTemporaryObjectExpr",
-// JSON-NEXT: "range": {
-// JSON-NEXT: "begin": {
-// JSON-NEXT: "offset": 1025,
-// JSON-NEXT: "col": 14,
-// JSON-NEXT: "tokLen": 3
-// JSON-NEXT: },
-// JSON-NEXT: "end": {
-// JSON-NEXT: "offset": 1043,
-// JSON-NEXT: "col": 32,
-// JSON-NEXT: "tokLen": 1
-// JSON-NEXT: }
-// JSON-NEXT: },
-// JSON-NEXT: "type": {
-// JSON-NEXT: "qualType": "foo<2, double, 3>"
-// JSON-NEXT: },
-// JSON-NEXT: "valueCategory": "prvalue",
-// JSON-NEXT: "ctorType": {
-// JSON-NEXT: "qualType": "void ()"
-// JSON-NEXT: },
-// JSON-NEXT: "hadMultipleCandidates": true,
-// JSON-NEXT: "constructionKind": "complete"
-// JSON-NEXT: }
-// JSON-NEXT: ]
-// JSON-NEXT: }
-// JSON-NEXT: ]
-// JSON-NEXT: }
-// JSON-NEXT: ]
-// JSON-NEXT: }
-// JSON-NEXT: ]
-// JSON-NEXT: }
-// JSON-NEXT: ]
-// JSON-NEXT: }
-// JSON-NEXT: ]
-// JSON-NEXT: }
-// JSON-NEXT: ]
-// JSON-NEXT: }
-// JSON-NEXT: ]
-// JSON-NEXT: },
-// JSON-NEXT: {
-// JSON-NEXT: "id": "0x{{.*}}",
-// JSON-NEXT: "kind": "ClassTemplateDecl",
-// JSON-NEXT: "loc": {
-// JSON-NEXT: "offset": 1856,
-// JSON-NEXT: "line": 52,
-// JSON-NEXT: "col": 33,
-// JSON-NEXT: "tokLen": 1
-// JSON-NEXT: },
-// JSON-NEXT: "range": {
-// JSON-NEXT: "begin": {
-// JSON-NEXT: "offset": 1824,
-// JSON-NEXT: "col": 1,
-// JSON-NEXT: "tokLen": 8
-// JSON-NEXT: },
-// JSON-NEXT: "end": {
-// JSON-NEXT: "offset": 1896,
-// JSON-NEXT: "line": 54,
-// JSON-NEXT: "col": 1,
-// JSON-NEXT: "tokLen": 1
-// JSON-NEXT: }
-// JSON-NEXT: },
-// JSON-NEXT: "name": "A",
-// JSON-NEXT: "inner": [
-// JSON-NEXT: {
-// JSON-NEXT: "id": "0x{{.*}}",
-// JSON-NEXT: "kind": "TemplateTypeParmDecl",
-// JSON-NEXT: "loc": {
-// JSON-NEXT: "offset": 1846,
-// JSON-NEXT: "line": 52,
-// JSON-NEXT: "col": 23,
-// JSON-NEXT: "tokLen": 1
-// JSON-NEXT: },
-// JSON-NEXT: "range": {
-// JSON-NEXT: "begin": {
-// JSON-NEXT: "offset": 1834,
-// JSON-NEXT: "col": 11,
-// JSON-NEXT: "tokLen": 8
-// JSON-NEXT: },
-// JSON-NEXT: "end": {
-// JSON-NEXT: "offset": 1846,
-// JSON-NEXT: "col": 23,
-// JSON-NEXT: "tokLen": 1
-// JSON-NEXT: }
-// JSON-NEXT: },
-// JSON-NEXT: "isReferenced": true,
-// JSON-NEXT: "name": "T",
-// JSON-NEXT: "tagUsed": "typename",
-// JSON-NEXT: "depth": 0,
-// JSON-NEXT: "index": 0,
-// JSON-NEXT: "isParameterPack": true
-// JSON-NEXT: },
-// JSON-NEXT: {
-// JSON-NEXT: "id": "0x{{.*}}",
-// JSON-NEXT: "kind": "CXXRecordDecl",
-// JSON-NEXT: "loc": {
-// JSON-NEXT: "offset": 1856,
-// JSON-NEXT: "col": 33,
-// JSON-NEXT: "tokLen": 1
-// JSON-NEXT: },
-// JSON-NEXT: "range": {
-// JSON-NEXT: "begin": {
-// JSON-NEXT: "offset": 1849,
-// JSON-NEXT: "col": 26,
-// JSON-NEXT: "tokLen": 6
-// JSON-NEXT: },
-// JSON-NEXT: "end": {
-// JSON-NEXT: "offset": 1896,
-// JSON-NEXT: "line": 54,
-// JSON-NEXT: "col": 1,
-// JSON-NEXT: "tokLen": 1
-// JSON-NEXT: }
-// JSON-NEXT: },
-// JSON-NEXT: "name": "A",
-// JSON-NEXT: "tagUsed": "struct",
-// JSON-NEXT: "completeDefinition": true,
-// JSON-NEXT: "definitionData": {
-// JSON-NEXT: "canConstDefaultInit": true,
-// JSON-NEXT: "copyAssign": {
-// JSON-NEXT: "hasConstParam": true,
-// JSON-NEXT: "implicitHasConstParam": true,
-// JSON-NEXT: "needsImplicit": true,
-// JSON-NEXT: "simple": true,
-// JSON-NEXT: "trivial": true
-// JSON-NEXT: },
-// JSON-NEXT: "copyCtor": {
-// JSON-NEXT: "hasConstParam": true,
-// JSON-NEXT: "implicitHasConstParam": true,
-// JSON-NEXT: "needsImplicit": true,
-// JSON-NEXT: "simple": true,
-// JSON-NEXT: "trivial": true
-// JSON-NEXT: },
-// JSON-NEXT: "defaultCtor": {
-// JSON-NEXT: "defaultedIsConstexpr": true,
-// JSON-NEXT: "exists": true,
-// JSON-NEXT: "isConstexpr": true,
-// JSON-NEXT: "needsImplicit": true,
-// JSON-NEXT: "trivial": true
-// JSON-NEXT: },
-// JSON-NEXT: "dtor": {
-// JSON-NEXT: "irrelevant": true,
-// JSON-NEXT: "needsImplicit": true,
-// JSON-NEXT: "simple": true,
-// JSON-NEXT: "trivial": true
-// JSON-NEXT: },
-// JSON-NEXT: "hasConstexprNonCopyMoveConstructor": true,
-// JSON-NEXT: "isAggregate": true,
-// JSON-NEXT: "isEmpty": true,
-// JSON-NEXT: "isLiteral": true,
-// JSON-NEXT: "isPOD": true,
-// JSON-NEXT: "isStandardLayout": true,
-// JSON-NEXT: "isTrivial": true,
-// JSON-NEXT: "isTriviallyCopyable": true,
-// JSON-NEXT: "moveAssign": {
-// JSON-NEXT: "exists": true,
-// JSON-NEXT: "needsImplicit": true,
-// JSON-NEXT: "simple": true,
-// JSON-NEXT: "trivial": true
-// JSON-NEXT: },
-// JSON-NEXT: "moveCtor": {
-// JSON-NEXT: "exists": true,
-// JSON-NEXT: "needsImplicit": true,
-// JSON-NEXT: "simple": true,
-// JSON-NEXT: "trivial": true
-// JSON-NEXT: }
-// JSON-NEXT: },
-// JSON-NEXT: "inner": [
-// JSON-NEXT: {
-// JSON-NEXT: "id": "0x{{.*}}",
-// JSON-NEXT: "kind": "CXXRecordDecl",
-// JSON-NEXT: "loc": {
-// JSON-NEXT: "offset": 1856,
-// JSON-NEXT: "line": 52,
-// JSON-NEXT: "col": 33,
-// JSON-NEXT: "tokLen": 1
-// JSON-NEXT: },
-// JSON-NEXT: "range": {
-// JSON-NEXT: "begin": {
-// JSON-NEXT: "offset": 1849,
-// JSON-NEXT: "col": 26,
-// JSON-NEXT: "tokLen": 6
-// JSON-NEXT: },
-// JSON-NEXT: "end": {
-// JSON-NEXT: "offset": 1856,
-// JSON-NEXT: "col": 33,
-// JSON-NEXT: "tokLen": 1
-// JSON-NEXT: }
-// JSON-NEXT: },
-// JSON-NEXT: "isImplicit": true,
-// JSON-NEXT: "name": "A",
-// JSON-NEXT: "tagUsed": "struct"
-// JSON-NEXT: },
-// JSON-NEXT: {
-// JSON-NEXT: "id": "0x{{.*}}",
-// JSON-NEXT: "kind": "ClassTemplateDecl",
-// JSON-NEXT: "loc": {
-// JSON-NEXT: "offset": 1890,
-// JSON-NEXT: "line": 53,
-// JSON-NEXT: "col": 31,
-// JSON-NEXT: "tokLen": 1
-// JSON-NEXT: },
-// JSON-NEXT: "range": {
-// JSON-NEXT: "begin": {
-// JSON-NEXT: "offset": 1862,
-// JSON-NEXT: "col": 3,
-// JSON-NEXT: "tokLen": 8
-// JSON-NEXT: },
-// JSON-NEXT: "end": {
-// JSON-NEXT: "offset": 1893,
-// JSON-NEXT: "col": 34,
-// JSON-NEXT: "tokLen": 1
-// JSON-NEXT: }
-// JSON-NEXT: },
-// JSON-NEXT: "name": "B",
-// JSON-NEXT: "inner": [
-// JSON-NEXT: {
-// JSON-NEXT: "id": "0x{{.*}}",
-// JSON-NEXT: "kind": "NonTypeTemplateParmDecl",
-// JSON-NEXT: "loc": {
-// JSON-NEXT: "offset": 1877,
-// JSON-NEXT: "col": 18,
-// JSON-NEXT: "tokLen": 1
-// JSON-NEXT: },
-// JSON-NEXT: "range": {
-// JSON-NEXT: "begin": {
-// JSON-NEXT: "offset": 1872,
-// JSON-NEXT: "col": 13,
-// JSON-NEXT: "tokLen": 1
-// JSON-NEXT: },
-// JSON-NEXT: "end": {
-// JSON-NEXT: "offset": 1880,
-// JSON-NEXT: "col": 21,
-// JSON-NEXT: "tokLen": 1
-// JSON-NEXT: }
-// JSON-NEXT: },
-// JSON-NEXT: "name": "x",
-// JSON-NEXT: "type": {
-// JSON-NEXT: "qualType": "T[3]..."
-// JSON-NEXT: },
-// JSON-NEXT: "depth": 1,
-// JSON-NEXT: "index": 0,
-// JSON-NEXT: "isParameterPack": true
-// JSON-NEXT: },
-// JSON-NEXT: {
-// JSON-NEXT: "id": "0x{{.*}}",
-// JSON-NEXT: "kind": "CXXRecordDecl",
-// JSON-NEXT: "loc": {
-// JSON-NEXT: "offset": 1890,
-// JSON-NEXT: "col": 31,
-// JSON-NEXT: "tokLen": 1
-// JSON-NEXT: },
-// JSON-NEXT: "range": {
-// JSON-NEXT: "begin": {
-// JSON-NEXT: "offset": 1883,
-// JSON-NEXT: "col": 24,
-// JSON-NEXT: "tokLen": 6
-// JSON-NEXT: },
-// JSON-NEXT: "end": {
-// JSON-NEXT: "offset": 1893,
-// JSON-NEXT: "col": 34,
-// JSON-NEXT: "tokLen": 1
-// JSON-NEXT: }
-// JSON-NEXT: },
-// JSON-NEXT: "name": "B",
-// JSON-NEXT: "tagUsed": "struct",
-// JSON-NEXT: "completeDefinition": true,
-// JSON-NEXT: "definitionData": {
-// JSON-NEXT: "canConstDefaultInit": true,
-// JSON-NEXT: "copyAssign": {
-// JSON-NEXT: "hasConstParam": true,
-// JSON-NEXT: "implicitHasConstParam": true,
-// JSON-NEXT: "needsImplicit": true,
-// JSON-NEXT: "simple": true,
-// JSON-NEXT: "trivial": true
-// JSON-NEXT: },
-// JSON-NEXT: "copyCtor": {
-// JSON-NEXT: "hasConstParam": true,
-// JSON-NEXT: "implicitHasConstParam": true,
-// JSON-NEXT: "needsImplicit": true,
-// JSON-NEXT: "simple": true,
-// JSON-NEXT: "trivial": true
-// JSON-NEXT: },
-// JSON-NEXT: "defaultCtor": {
-// JSON-NEXT: "defaultedIsConstexpr": true,
-// JSON-NEXT: "exists": true,
-// JSON-NEXT: "isConstexpr": true,
-// JSON-NEXT: "needsImplicit": true,
-// JSON-NEXT: "trivial": true
-// JSON-NEXT: },
-// JSON-NEXT: "dtor": {
-// JSON-NEXT: "irrelevant": true,
-// JSON-NEXT: "needsImplicit": true,
-// JSON-NEXT: "simple": true,
-// JSON-NEXT: "trivial": true
-// JSON-NEXT: },
-// JSON-NEXT: "hasConstexprNonCopyMoveConstructor": true,
-// JSON-NEXT: "isAggregate": true,
-// JSON-NEXT: "isEmpty": true,
-// JSON-NEXT: "isLiteral": true,
-// JSON-NEXT: "isPOD": true,
-// JSON-NEXT: "isStandardLayout": true,
-// JSON-NEXT: "isTrivial": true,
-// JSON-NEXT: "isTriviallyCopyable": true,
-// JSON-NEXT: "moveAssign": {
-// JSON-NEXT: "exists": true,
-// JSON-NEXT: "needsImplicit": true,
-// JSON-NEXT: "simple": true,
-// JSON-NEXT: "trivial": true
-// JSON-NEXT: },
-// JSON-NEXT: "moveCtor": {
-// JSON-NEXT: "exists": true,
-// JSON-NEXT: "needsImplicit": true,
-// JSON-NEXT: "simple": true,
-// JSON-NEXT: "trivial": true
-// JSON-NEXT: }
-// JSON-NEXT: },
-// JSON-NEXT: "inner": [
-// JSON-NEXT: {
-// JSON-NEXT: "id": "0x{{.*}}",
-// JSON-NEXT: "kind": "CXXRecordDecl",
-// JSON-NEXT: "loc": {
-// JSON-NEXT: "offset": 1890,
-// JSON-NEXT: "col": 31,
-// JSON-NEXT: "tokLen": 1
-// JSON-NEXT: },
-// JSON-NEXT: "range": {
-// JSON-NEXT: "begin": {
-// JSON-NEXT: "offset": 1883,
-// JSON-NEXT: "col": 24,
-// JSON-NEXT: "tokLen": 6
-// JSON-NEXT: },
-// JSON-NEXT: "end": {
-// JSON-NEXT: "offset": 1890,
-// JSON-NEXT: "col": 31,
-// JSON-NEXT: "tokLen": 1
-// JSON-NEXT: }
-// JSON-NEXT: },
-// JSON-NEXT: "isImplicit": true,
-// JSON-NEXT: "name": "B",
-// JSON-NEXT: "tagUsed": "struct"
-// JSON-NEXT: }
-// JSON-NEXT: ]
-// JSON-NEXT: }
-// JSON-NEXT: ]
-// JSON-NEXT: }
-// JSON-NEXT: ]
-// JSON-NEXT: }
-// JSON-NEXT: ]
-// JSON-NEXT: },
-// JSON-NEXT: {
-// JSON-NEXT: "id": "0x{{.*}}",
-// JSON-NEXT: "kind": "FunctionTemplateDecl",
-// JSON-NEXT: "loc": {
-// JSON-NEXT: "offset": 2016,
-// JSON-NEXT: "line": 58,
-// JSON-NEXT: "col": 31,
-// JSON-NEXT: "tokLen": 1
-// JSON-NEXT: },
-// JSON-NEXT: "range": {
-// JSON-NEXT: "begin": {
-// JSON-NEXT: "offset": 1986,
-// JSON-NEXT: "col": 1,
-// JSON-NEXT: "tokLen": 8
-// JSON-NEXT: },
-// JSON-NEXT: "end": {
-// JSON-NEXT: "offset": 2038,
-// JSON-NEXT: "line": 60,
-// JSON-NEXT: "col": 1,
-// JSON-NEXT: "tokLen": 1
-// JSON-NEXT: }
-// JSON-NEXT: },
-// JSON-NEXT: "name": "f",
-// JSON-NEXT: "inner": [
-// JSON-NEXT: {
-// JSON-NEXT: "id": "0x{{.*}}",
-// JSON-NEXT: "kind": "TemplateTypeParmDecl",
-// JSON-NEXT: "loc": {
-// JSON-NEXT: "offset": 2008,
-// JSON-NEXT: "line": 58,
-// JSON-NEXT: "col": 23,
-// JSON-NEXT: "tokLen": 1
-// JSON-NEXT: },
-// JSON-NEXT: "range": {
-// JSON-NEXT: "begin": {
-// JSON-NEXT: "offset": 1996,
-// JSON-NEXT: "col": 11,
-// JSON-NEXT: "tokLen": 8
-// JSON-NEXT: },
-// JSON-NEXT: "end": {
-// JSON-NEXT: "offset": 2008,
-// JSON-NEXT: "col": 23,
-// JSON-NEXT: "tokLen": 1
-// JSON-NEXT: }
-// JSON-NEXT: },
-// JSON-NEXT: "isReferenced": true,
-// JSON-NEXT: "name": "T",
-// JSON-NEXT: "tagUsed": "typename",
-// JSON-NEXT: "depth": 0,
-// JSON-NEXT: "index": 0,
-// JSON-NEXT: "isParameterPack": true
-// JSON-NEXT: },
-// JSON-NEXT: {
-// JSON-NEXT: "id": "0x{{.*}}",
-// JSON-NEXT: "kind": "FunctionDecl",
-// JSON-NEXT: "loc": {
-// JSON-NEXT: "offset": 2016,
-// JSON-NEXT: "col": 31,
-// JSON-NEXT: "tokLen": 1
-// JSON-NEXT: },
-// JSON-NEXT: "range": {
-// JSON-NEXT: "begin": {
-// JSON-NEXT: "offset": 2011,
-// JSON-NEXT: "col": 26,
-// JSON-NEXT: "tokLen": 4
-// JSON-NEXT: },
-// JSON-NEXT: "end": {
-// JSON-NEXT: "offset": 2038,
-// JSON-NEXT: "line": 60,
-// JSON-NEXT: "col": 1,
-// JSON-NEXT: "tokLen": 1
-// JSON-NEXT: }
-// JSON-NEXT: },
-// JSON-NEXT: "name": "f",
-// JSON-NEXT: "type": {
-// JSON-NEXT: "qualType": "void ()"
-// JSON-NEXT: },
-// JSON-NEXT: "inner": [
-// JSON-NEXT: {
-// JSON-NEXT: "id": "0x{{.*}}",
-// JSON-NEXT: "kind": "CompoundStmt",
-// JSON-NEXT: "range": {
-// JSON-NEXT: "begin": {
-// JSON-NEXT: "offset": 2020,
-// JSON-NEXT: "line": 58,
-// JSON-NEXT: "col": 35,
-// JSON-NEXT: "tokLen": 1
-// JSON-NEXT: },
-// JSON-NEXT: "end": {
-// JSON-NEXT: "offset": 2038,
-// JSON-NEXT: "line": 60,
-// JSON-NEXT: "col": 1,
-// JSON-NEXT: "tokLen": 1
-// JSON-NEXT: }
-// JSON-NEXT: },
-// JSON-NEXT: "inner": [
-// JSON-NEXT: {
-// JSON-NEXT: "id": "0x{{.*}}",
-// JSON-NEXT: "kind": "DeclStmt",
-// JSON-NEXT: "range": {
-// JSON-NEXT: "begin": {
-// JSON-NEXT: "offset": 2024,
-// JSON-NEXT: "line": 59,
-// JSON-NEXT: "col": 3,
-// JSON-NEXT: "tokLen": 1
-// JSON-NEXT: },
-// JSON-NEXT: "end": {
-// JSON-NEXT: "offset": 2036,
-// JSON-NEXT: "col": 15,
-// JSON-NEXT: "tokLen": 1
-// JSON-NEXT: }
-// JSON-NEXT: },
-// JSON-NEXT: "inner": [
-// JSON-NEXT: {
-// JSON-NEXT: "id": "0x{{.*}}",
-// JSON-NEXT: "kind": "VarDecl",
-// JSON-NEXT: "loc": {
-// JSON-NEXT: "offset": 2035,
-// JSON-NEXT: "col": 14,
-// JSON-NEXT: "tokLen": 1
-// JSON-NEXT: },
-// JSON-NEXT: "range": {
-// JSON-NEXT: "begin": {
-// JSON-NEXT: "offset": 2024,
-// JSON-NEXT: "col": 3,
-// JSON-NEXT: "tokLen": 1
-// JSON-NEXT: },
-// JSON-NEXT: "end": {
-// JSON-NEXT: "offset": 2035,
-// JSON-NEXT: "col": 14,
-// JSON-NEXT: "tokLen": 1
-// JSON-NEXT: }
-// JSON-NEXT: },
-// JSON-NEXT: "name": "a",
-// JSON-NEXT: "type": {
-// JSON-NEXT: "qualType": "A<T[3]...>"
-// JSON-NEXT: }
-// JSON-NEXT: }
-// JSON-NEXT: ]
-// JSON-NEXT: }
-// JSON-NEXT: ]
-// JSON-NEXT: }
-// JSON-NEXT: ]
-// JSON-NEXT: }
-// JSON-NEXT: ]
-// JSON-NEXT: },
-// JSON-NEXT: {
-// JSON-NEXT: "id": "0x{{.*}}",
-// JSON-NEXT: "kind": "NamespaceDecl",
-// JSON-NEXT: "loc": {
-// JSON-NEXT: "offset": 2051,
-// JSON-NEXT: "line": 62,
-// JSON-NEXT: "col": 11,
-// JSON-NEXT: "tokLen": 5
-// JSON-NEXT: },
-// JSON-NEXT: "range": {
-// JSON-NEXT: "begin": {
-// JSON-NEXT: "offset": 2041,
-// JSON-NEXT: "col": 1,
-// JSON-NEXT: "tokLen": 9
-// JSON-NEXT: },
-// JSON-NEXT: "end": {
-// JSON-NEXT: "offset": 2240,
-// JSON-NEXT: "line": 71,
-// JSON-NEXT: "col": 1,
-// JSON-NEXT: "tokLen": 1
-// JSON-NEXT: }
-// JSON-NEXT: },
-// JSON-NEXT: "name": "test2",
-// JSON-NEXT: "inner": [
-// JSON-NEXT: {
-// JSON-NEXT: "id": "0x{{.*}}",
-// JSON-NEXT: "kind": "FunctionDecl",
-// JSON-NEXT: "loc": {
-// JSON-NEXT: "offset": 2064,
-// JSON-NEXT: "line": 63,
-// JSON-NEXT: "col": 6,
-// JSON-NEXT: "tokLen": 4
-// JSON-NEXT: },
-// JSON-NEXT: "range": {
-// JSON-NEXT: "begin": {
-// JSON-NEXT: "offset": 2059,
-// JSON-NEXT: "col": 1,
-// JSON-NEXT: "tokLen": 4
-// JSON-NEXT: },
-// JSON-NEXT: "end": {
-// JSON-NEXT: "offset": 2072,
-// JSON-NEXT: "col": 14,
-// JSON-NEXT: "tokLen": 1
-// JSON-NEXT: }
-// JSON-NEXT: },
-// JSON-NEXT: "name": "func",
-// JSON-NEXT: "mangledName": "_ZN5test24funcEi",
-// JSON-NEXT: "type": {
-// JSON-NEXT: "qualType": "void (int)"
-// JSON-NEXT: },
-// JSON-NEXT: "inner": [
-// JSON-NEXT: {
-// JSON-NEXT: "id": "0x{{.*}}",
-// JSON-NEXT: "kind": "ParmVarDecl",
-// JSON-NEXT: "loc": {
-// JSON-NEXT: "offset": 2072,
-// JSON-NEXT: "col": 14,
-// JSON-NEXT: "tokLen": 1
-// JSON-NEXT: },
-// JSON-NEXT: "range": {
-// JSON-NEXT: "begin": {
-// JSON-NEXT: "offset": 2069,
-// JSON-NEXT: "col": 11,
-// JSON-NEXT: "tokLen": 3
-// JSON-NEXT: },
-// JSON-NEXT: "end": {
-// JSON-NEXT: "offset": 2069,
-// JSON-NEXT: "col": 11,
-// JSON-NEXT: "tokLen": 3
-// JSON-NEXT: }
-// JSON-NEXT: },
-// JSON-NEXT: "type": {
-// JSON-NEXT: "qualType": "int"
-// JSON-NEXT: }
-// JSON-NEXT: }
-// JSON-NEXT: ]
-// JSON-NEXT: },
-// JSON-NEXT: {
-// JSON-NEXT: "id": "0x{{.*}}",
-// JSON-NEXT: "kind": "FunctionDecl",
-// JSON-NEXT: "loc": {
-// JSON-NEXT: "offset": 2080,
-// JSON-NEXT: "line": 64,
-// JSON-NEXT: "col": 6,
-// JSON-NEXT: "tokLen": 4
-// JSON-NEXT: },
-// JSON-NEXT: "range": {
-// JSON-NEXT: "begin": {
-// JSON-NEXT: "offset": 2075,
-// JSON-NEXT: "col": 1,
-// JSON-NEXT: "tokLen": 4
-// JSON-NEXT: },
-// JSON-NEXT: "end": {
-// JSON-NEXT: "offset": 2090,
-// JSON-NEXT: "col": 16,
-// JSON-NEXT: "tokLen": 1
-// JSON-NEXT: }
-// JSON-NEXT: },
-// JSON-NEXT: "name": "func",
-// JSON-NEXT: "mangledName": "_ZN5test24funcEf",
-// JSON-NEXT: "type": {
-// JSON-NEXT: "qualType": "void (float)"
-// JSON-NEXT: },
-// JSON-NEXT: "inner": [
-// JSON-NEXT: {
-// JSON-NEXT: "id": "0x{{.*}}",
-// JSON-NEXT: "kind": "ParmVarDecl",
-// JSON-NEXT: "loc": {
-// JSON-NEXT: "offset": 2090,
-// JSON-NEXT: "col": 16,
-// JSON-NEXT: "tokLen": 1
-// JSON-NEXT: },
-// JSON-NEXT: "range": {
-// JSON-NEXT: "begin": {
-// JSON-NEXT: "offset": 2085,
-// JSON-NEXT: "col": 11,
-// JSON-NEXT: "tokLen": 5
-// JSON-NEXT: },
-// JSON-NEXT: "end": {
-// JSON-NEXT: "offset": 2085,
-// JSON-NEXT: "col": 11,
-// JSON-NEXT: "tokLen": 5
-// JSON-NEXT: }
-// JSON-NEXT: },
-// JSON-NEXT: "type": {
-// JSON-NEXT: "qualType": "float"
-// JSON-NEXT: }
-// JSON-NEXT: }
-// JSON-NEXT: ]
-// JSON-NEXT: },
-// JSON-NEXT: {
-// JSON-NEXT: "id": "0x{{.*}}",
-// JSON-NEXT: "kind": "FunctionTemplateDecl",
-// JSON-NEXT: "loc": {
-// JSON-NEXT: "offset": 2119,
-// JSON-NEXT: "line": 66,
-// JSON-NEXT: "col": 6,
-// JSON-NEXT: "tokLen": 4
-// JSON-NEXT: },
-// JSON-NEXT: "range": {
-// JSON-NEXT: "begin": {
-// JSON-NEXT: "offset": 2093,
-// JSON-NEXT: "line": 65,
-// JSON-NEXT: "col": 1,
-// JSON-NEXT: "tokLen": 8
-// JSON-NEXT: },
-// JSON-NEXT: "end": {
-// JSON-NEXT: "offset": 2141,
-// JSON-NEXT: "line": 68,
-// JSON-NEXT: "col": 1,
-// JSON-NEXT: "tokLen": 1
-// JSON-NEXT: }
-// JSON-NEXT: },
-// JSON-NEXT: "name": "tmpl",
-// JSON-NEXT: "inner": [
-// JSON-NEXT: {
-// JSON-NEXT: "id": "0x{{.*}}",
-// JSON-NEXT: "kind": "TemplateTypeParmDecl",
-// JSON-NEXT: "loc": {
-// JSON-NEXT: "offset": 2111,
-// JSON-NEXT: "line": 65,
-// JSON-NEXT: "col": 19,
-// JSON-NEXT: "tokLen": 1
-// JSON-NEXT: },
-// JSON-NEXT: "range": {
-// JSON-NEXT: "begin": {
-// JSON-NEXT: "offset": 2102,
-// JSON-NEXT: "col": 10,
-// JSON-NEXT: "tokLen": 8
-// JSON-NEXT: },
-// JSON-NEXT: "end": {
-// JSON-NEXT: "offset": 2111,
-// JSON-NEXT: "col": 19,
-// JSON-NEXT: "tokLen": 1
-// JSON-NEXT: }
-// JSON-NEXT: },
-// JSON-NEXT: "isReferenced": true,
-// JSON-NEXT: "name": "T",
-// JSON-NEXT: "tagUsed": "typename",
-// JSON-NEXT: "depth": 0,
-// JSON-NEXT: "index": 0
-// JSON-NEXT: },
-// JSON-NEXT: {
-// JSON-NEXT: "id": "0x{{.*}}",
-// JSON-NEXT: "kind": "FunctionDecl",
-// JSON-NEXT: "loc": {
-// JSON-NEXT: "offset": 2119,
-// JSON-NEXT: "line": 66,
-// JSON-NEXT: "col": 6,
-// JSON-NEXT: "tokLen": 4
-// JSON-NEXT: },
-// JSON-NEXT: "range": {
-// JSON-NEXT: "begin": {
-// JSON-NEXT: "offset": 2114,
-// JSON-NEXT: "col": 1,
-// JSON-NEXT: "tokLen": 4
-// JSON-NEXT: },
-// JSON-NEXT: "end": {
-// JSON-NEXT: "offset": 2141,
-// JSON-NEXT: "line": 68,
-// JSON-NEXT: "col": 1,
-// JSON-NEXT: "tokLen": 1
-// JSON-NEXT: }
-// JSON-NEXT: },
-// JSON-NEXT: "name": "tmpl",
-// JSON-NEXT: "type": {
-// JSON-NEXT: "qualType": "void ()"
-// JSON-NEXT: },
-// JSON-NEXT: "inner": [
-// JSON-NEXT: {
-// JSON-NEXT: "id": "0x{{.*}}",
-// JSON-NEXT: "kind": "CompoundStmt",
-// JSON-NEXT: "range": {
-// JSON-NEXT: "begin": {
-// JSON-NEXT: "offset": 2126,
-// JSON-NEXT: "line": 66,
-// JSON-NEXT: "col": 13,
-// JSON-NEXT: "tokLen": 1
-// JSON-NEXT: },
-// JSON-NEXT: "end": {
-// JSON-NEXT: "offset": 2141,
-// JSON-NEXT: "line": 68,
-// JSON-NEXT: "col": 1,
-// JSON-NEXT: "tokLen": 1
-// JSON-NEXT: }
-// JSON-NEXT: },
-// JSON-NEXT: "inner": [
-// JSON-NEXT: {
-// JSON-NEXT: "id": "0x{{.*}}",
-// JSON-NEXT: "kind": "CallExpr",
-// JSON-NEXT: "range": {
-// JSON-NEXT: "begin": {
-// JSON-NEXT: "offset": 2130,
-// JSON-NEXT: "line": 67,
-// JSON-NEXT: "col": 3,
-// JSON-NEXT: "tokLen": 4
-// JSON-NEXT: },
-// JSON-NEXT: "end": {
-// JSON-NEXT: "offset": 2138,
-// JSON-NEXT: "col": 11,
-// JSON-NEXT: "tokLen": 1
-// JSON-NEXT: }
-// JSON-NEXT: },
-// JSON-NEXT: "type": {
-// JSON-NEXT: "qualType": "<dependent type>"
-// JSON-NEXT: },
-// JSON-NEXT: "valueCategory": "prvalue",
-// JSON-NEXT: "inner": [
-// JSON-NEXT: {
-// JSON-NEXT: "id": "0x{{.*}}",
-// JSON-NEXT: "kind": "UnresolvedLookupExpr",
-// JSON-NEXT: "range": {
-// JSON-NEXT: "begin": {
-// JSON-NEXT: "offset": 2130,
-// JSON-NEXT: "col": 3,
-// JSON-NEXT: "tokLen": 4
-// JSON-NEXT: },
-// JSON-NEXT: "end": {
-// JSON-NEXT: "offset": 2130,
-// JSON-NEXT: "col": 3,
-// JSON-NEXT: "tokLen": 4
-// JSON-NEXT: }
-// JSON-NEXT: },
-// JSON-NEXT: "type": {
-// JSON-NEXT: "qualType": "<overloaded function type>"
-// JSON-NEXT: },
-// JSON-NEXT: "valueCategory": "lvalue",
-// JSON-NEXT: "usesADL": true,
-// JSON-NEXT: "name": "func",
-// JSON-NEXT: "lookups": [
-// JSON-NEXT: {
-// JSON-NEXT: "id": "0x{{.*}}",
-// JSON-NEXT: "kind": "FunctionDecl",
-// JSON-NEXT: "name": "func",
-// JSON-NEXT: "type": {
-// JSON-NEXT: "qualType": "void (float)"
-// JSON-NEXT: }
-// JSON-NEXT: },
-// JSON-NEXT: {
-// JSON-NEXT: "id": "0x{{.*}}",
-// JSON-NEXT: "kind": "FunctionDecl",
-// JSON-NEXT: "name": "func",
-// JSON-NEXT: "type": {
-// JSON-NEXT: "qualType": "void (int)"
-// JSON-NEXT: }
-// JSON-NEXT: }
-// JSON-NEXT: ]
-// JSON-NEXT: },
-// JSON-NEXT: {
-// JSON-NEXT: "id": "0x{{.*}}",
-// JSON-NEXT: "kind": "CXXUnresolvedConstructExpr",
-// JSON-NEXT: "range": {
-// JSON-NEXT: "begin": {
-// JSON-NEXT: "offset": 2135,
-// JSON-NEXT: "col": 8,
-// JSON-NEXT: "tokLen": 1
-// JSON-NEXT: },
-// JSON-NEXT: "end": {
-// JSON-NEXT: "offset": 2137,
-// JSON-NEXT: "col": 10,
-// JSON-NEXT: "tokLen": 1
-// JSON-NEXT: }
-// JSON-NEXT: },
-// JSON-NEXT: "type": {
-// JSON-NEXT: "qualType": "T"
-// JSON-NEXT: },
-// JSON-NEXT: "valueCategory": "prvalue"
-// JSON-NEXT: }
-// JSON-NEXT: ]
-// JSON-NEXT: }
-// JSON-NEXT: ]
-// JSON-NEXT: }
-// JSON-NEXT: ]
-// JSON-NEXT: }
-// JSON-NEXT: ]
-// JSON-NEXT: }
-// JSON-NEXT: ]
-// JSON-NEXT: },
-// JSON-NEXT: {
-// JSON-NEXT: "id": "0x{{.*}}",
-// JSON-NEXT: "kind": "NamespaceDecl",
-// JSON-NEXT: "loc": {
-// JSON-NEXT: "offset": 2253,
-// JSON-NEXT: "line": 73,
-// JSON-NEXT: "col": 11,
-// JSON-NEXT: "tokLen": 5
-// JSON-NEXT: },
-// JSON-NEXT: "range": {
-// JSON-NEXT: "begin": {
-// JSON-NEXT: "offset": 2243,
-// JSON-NEXT: "col": 1,
-// JSON-NEXT: "tokLen": 9
-// JSON-NEXT: },
-// JSON-NEXT: "end": {
-// JSON-NEXT: "offset": 2387,
-// JSON-NEXT: "line": 77,
-// JSON-NEXT: "col": 1,
-// JSON-NEXT: "tokLen": 1
-// JSON-NEXT: }
-// JSON-NEXT: },
-// JSON-NEXT: "name": "test3",
-// JSON-NEXT: "inner": [
-// JSON-NEXT: {
-// JSON-NEXT: "id": "0x{{.*}}",
-// JSON-NEXT: "kind": "ClassTemplateDecl",
-// JSON-NEXT: "loc": {
-// JSON-NEXT: "offset": 2291,
-// JSON-NEXT: "line": 74,
-// JSON-NEXT: "col": 31,
-// JSON-NEXT: "tokLen": 1
-// JSON-NEXT: },
-// JSON-NEXT: "range": {
-// JSON-NEXT: "begin": {
-// JSON-NEXT: "offset": 2263,
-// JSON-NEXT: "col": 3,
-// JSON-NEXT: "tokLen": 8
-// JSON-NEXT: },
-// JSON-NEXT: "end": {
-// JSON-NEXT: "offset": 2294,
-// JSON-NEXT: "col": 34,
-// JSON-NEXT: "tokLen": 1
-// JSON-NEXT: }
-// JSON-NEXT: },
-// JSON-NEXT: "name": "A",
-// JSON-NEXT: "inner": [
-// JSON-NEXT: {
-// JSON-NEXT: "id": "0x{{.*}}",
-// JSON-NEXT: "kind": "TemplateTypeParmDecl",
-// JSON-NEXT: "loc": {
-// JSON-NEXT: "offset": 2281,
-// JSON-NEXT: "col": 21,
-// JSON-NEXT: "tokLen": 1
-// JSON-NEXT: },
-// JSON-NEXT: "range": {
-// JSON-NEXT: "begin": {
-// JSON-NEXT: "offset": 2272,
-// JSON-NEXT: "col": 12,
-// JSON-NEXT: "tokLen": 8
-// JSON-NEXT: },
-// JSON-NEXT: "end": {
-// JSON-NEXT: "offset": 2281,
-// JSON-NEXT: "col": 21,
-// JSON-NEXT: "tokLen": 1
-// JSON-NEXT: }
-// JSON-NEXT: },
-// JSON-NEXT: "name": "T",
-// JSON-NEXT: "tagUsed": "typename",
-// JSON-NEXT: "depth": 0,
-// JSON-NEXT: "index": 0
-// JSON-NEXT: },
-// JSON-NEXT: {
-// JSON-NEXT: "id": "0x{{.*}}",
-// JSON-NEXT: "kind": "CXXRecordDecl",
-// JSON-NEXT: "loc": {
-// JSON-NEXT: "offset": 2291,
-// JSON-NEXT: "col": 31,
-// JSON-NEXT: "tokLen": 1
-// JSON-NEXT: },
-// JSON-NEXT: "range": {
-// JSON-NEXT: "begin": {
-// JSON-NEXT: "offset": 2284,
-// JSON-NEXT: "col": 24,
-// JSON-NEXT: "tokLen": 6
-// JSON-NEXT: },
-// JSON-NEXT: "end": {
-// JSON-NEXT: "offset": 2294,
-// JSON-NEXT: "col": 34,
-// JSON-NEXT: "tokLen": 1
-// JSON-NEXT: }
-// JSON-NEXT: },
-// JSON-NEXT: "name": "A",
-// JSON-NEXT: "tagUsed": "struct",
-// JSON-NEXT: "completeDefinition": true,
-// JSON-NEXT: "definitionData": {
-// JSON-NEXT: "canConstDefaultInit": true,
-// JSON-NEXT: "copyAssign": {
-// JSON-NEXT: "hasConstParam": true,
-// JSON-NEXT: "implicitHasConstParam": true,
-// JSON-NEXT: "needsImplicit": true,
-// JSON-NEXT: "simple": true,
-// JSON-NEXT: "trivial": true
-// JSON-NEXT: },
-// JSON-NEXT: "copyCtor": {
-// JSON-NEXT: "hasConstParam": true,
-// JSON-NEXT: "implicitHasConstParam": true,
-// JSON-NEXT: "needsImplicit": true,
-// JSON-NEXT: "simple": true,
-// JSON-NEXT: "trivial": true
-// JSON-NEXT: },
-// JSON-NEXT: "defaultCtor": {
-// JSON-NEXT: "defaultedIsConstexpr": true,
-// JSON-NEXT: "exists": true,
-// JSON-NEXT: "isConstexpr": true,
-// JSON-NEXT: "needsImplicit": true,
-// JSON-NEXT: "trivial": true
-// JSON-NEXT: },
-// JSON-NEXT: "dtor": {
-// JSON-NEXT: "irrelevant": true,
-// JSON-NEXT: "needsImplicit": true,
-// JSON-NEXT: "simple": true,
-// JSON-NEXT: "trivial": true
-// JSON-NEXT: },
-// JSON-NEXT: "hasConstexprNonCopyMoveConstructor": true,
-// JSON-NEXT: "isAggregate": true,
-// JSON-NEXT: "isEmpty": true,
-// JSON-NEXT: "isLiteral": true,
-// JSON-NEXT: "isPOD": true,
-// JSON-NEXT: "isStandardLayout": true,
-// JSON-NEXT: "isTrivial": true,
-// JSON-NEXT: "isTriviallyCopyable": true,
-// JSON-NEXT: "moveAssign": {
-// JSON-NEXT: "exists": true,
-// JSON-NEXT: "needsImplicit": true,
-// JSON-NEXT: "simple": true,
-// JSON-NEXT: "trivial": true
-// JSON-NEXT: },
-// JSON-NEXT: "moveCtor": {
-// JSON-NEXT: "exists": true,
-// JSON-NEXT: "needsImplicit": true,
-// JSON-NEXT: "simple": true,
-// JSON-NEXT: "trivial": true
-// JSON-NEXT: }
-// JSON-NEXT: },
-// JSON-NEXT: "inner": [
-// JSON-NEXT: {
-// JSON-NEXT: "id": "0x{{.*}}",
-// JSON-NEXT: "kind": "CXXRecordDecl",
-// JSON-NEXT: "loc": {
-// JSON-NEXT: "offset": 2291,
-// JSON-NEXT: "col": 31,
-// JSON-NEXT: "tokLen": 1
-// JSON-NEXT: },
-// JSON-NEXT: "range": {
-// JSON-NEXT: "begin": {
-// JSON-NEXT: "offset": 2284,
-// JSON-NEXT: "col": 24,
-// JSON-NEXT: "tokLen": 6
-// JSON-NEXT: },
-// JSON-NEXT: "end": {
-// JSON-NEXT: "offset": 2291,
-// JSON-NEXT: "col": 31,
-// JSON-NEXT: "tokLen": 1
-// JSON-NEXT: }
-// JSON-NEXT: },
-// JSON-NEXT: "isImplicit": true,
-// JSON-NEXT: "name": "A",
-// JSON-NEXT: "tagUsed": "struct"
-// JSON-NEXT: }
-// JSON-NEXT: ]
-// JSON-NEXT: },
-// JSON-NEXT: {
-// JSON-NEXT: "id": "0x{{.*}}",
-// JSON-NEXT: "kind": "ClassTemplateSpecializationDecl",
-// JSON-NEXT: "loc": {
-// JSON-NEXT: "offset": 2291,
-// JSON-NEXT: "col": 31,
-// JSON-NEXT: "tokLen": 1
-// JSON-NEXT: },
-// JSON-NEXT: "range": {
-// JSON-NEXT: "begin": {
-// JSON-NEXT: "offset": 2263,
-// JSON-NEXT: "col": 3,
-// JSON-NEXT: "tokLen": 8
-// JSON-NEXT: },
-// JSON-NEXT: "end": {
-// JSON-NEXT: "offset": 2294,
-// JSON-NEXT: "col": 34,
-// JSON-NEXT: "tokLen": 1
-// JSON-NEXT: }
-// JSON-NEXT: },
-// JSON-NEXT: "name": "A",
-// JSON-NEXT: "tagUsed": "struct",
-// JSON-NEXT: "inner": [
-// JSON-NEXT: {
-// JSON-NEXT: "kind": "TemplateArgument",
-// JSON-NEXT: "type": {
-// JSON-NEXT: "qualType": "int"
-// JSON-NEXT: },
-// JSON-NEXT: "inner": [
-// JSON-NEXT: {
-// JSON-NEXT: "id": "0x{{.*}}",
-// JSON-NEXT: "kind": "BuiltinType",
-// JSON-NEXT: "type": {
-// JSON-NEXT: "qualType": "int"
-// JSON-NEXT: }
-// JSON-NEXT: }
-// JSON-NEXT: ]
-// JSON-NEXT: }
-// JSON-NEXT: ]
-// JSON-NEXT: }
-// JSON-NEXT: ]
-// JSON-NEXT: },
-// JSON-NEXT: {
-// JSON-NEXT: "id": "0x{{.*}}",
-// JSON-NEXT: "kind": "FunctionTemplateDecl",
-// JSON-NEXT: "loc": {
-// JSON-NEXT: "offset": 2291,
-// JSON-NEXT: "col": 31,
-// JSON-NEXT: "tokLen": 1
-// JSON-NEXT: },
-// JSON-NEXT: "range": {
-// JSON-NEXT: "begin": {
-// JSON-NEXT: "offset": 2263,
-// JSON-NEXT: "col": 3,
-// JSON-NEXT: "tokLen": 8
-// JSON-NEXT: },
-// JSON-NEXT: "end": {
-// JSON-NEXT: "offset": 2291,
-// JSON-NEXT: "col": 31,
-// JSON-NEXT: "tokLen": 1
-// JSON-NEXT: }
-// JSON-NEXT: },
-// JSON-NEXT: "isImplicit": true,
-// JSON-NEXT: "name": "<deduction guide for A>",
-// JSON-NEXT: "inner": [
-// JSON-NEXT: {
-// JSON-NEXT: "id": "0x{{.*}}",
-// JSON-NEXT: "kind": "TemplateTypeParmDecl",
-// JSON-NEXT: "loc": {
-// JSON-NEXT: "offset": 2281,
-// JSON-NEXT: "col": 21,
-// JSON-NEXT: "tokLen": 1
-// JSON-NEXT: },
-// JSON-NEXT: "range": {
-// JSON-NEXT: "begin": {
-// JSON-NEXT: "offset": 2272,
-// JSON-NEXT: "col": 12,
-// JSON-NEXT: "tokLen": 8
-// JSON-NEXT: },
-// JSON-NEXT: "end": {
-// JSON-NEXT: "offset": 2281,
-// JSON-NEXT: "col": 21,
-// JSON-NEXT: "tokLen": 1
-// JSON-NEXT: }
-// JSON-NEXT: },
-// JSON-NEXT: "name": "T",
-// JSON-NEXT: "tagUsed": "typename",
-// JSON-NEXT: "depth": 0,
-// JSON-NEXT: "index": 0
-// JSON-NEXT: },
-// JSON-NEXT: {
-// JSON-NEXT: "id": "0x{{.*}}",
-// JSON-NEXT: "kind": "CXXDeductionGuideDecl",
-// JSON-NEXT: "loc": {
-// JSON-NEXT: "offset": 2291,
-// JSON-NEXT: "col": 31,
-// JSON-NEXT: "tokLen": 1
-// JSON-NEXT: },
-// JSON-NEXT: "range": {
-// JSON-NEXT: "begin": {
-// JSON-NEXT: "offset": 2291,
-// JSON-NEXT: "col": 31,
-// JSON-NEXT: "tokLen": 1
-// JSON-NEXT: },
-// JSON-NEXT: "end": {
-// JSON-NEXT: "offset": 2291,
-// JSON-NEXT: "col": 31,
-// JSON-NEXT: "tokLen": 1
-// JSON-NEXT: }
-// JSON-NEXT: },
-// JSON-NEXT: "isImplicit": true,
-// JSON-NEXT: "name": "<deduction guide for A>",
-// JSON-NEXT: "type": {
-// JSON-NEXT: "qualType": "auto () -> A<T>"
-// JSON-NEXT: }
-// JSON-NEXT: }
-// JSON-NEXT: ]
-// JSON-NEXT: },
-// JSON-NEXT: {
-// JSON-NEXT: "id": "0x{{.*}}",
-// JSON-NEXT: "kind": "FunctionTemplateDecl",
-// JSON-NEXT: "loc": {
-// JSON-NEXT: "offset": 2291,
-// JSON-NEXT: "col": 31,
-// JSON-NEXT: "tokLen": 1
-// JSON-NEXT: },
-// JSON-NEXT: "range": {
-// JSON-NEXT: "begin": {
-// JSON-NEXT: "offset": 2263,
-// JSON-NEXT: "col": 3,
-// JSON-NEXT: "tokLen": 8
-// JSON-NEXT: },
-// JSON-NEXT: "end": {
-// JSON-NEXT: "offset": 2291,
-// JSON-NEXT: "col": 31,
-// JSON-NEXT: "tokLen": 1
-// JSON-NEXT: }
-// JSON-NEXT: },
-// JSON-NEXT: "isImplicit": true,
-// JSON-NEXT: "name": "<deduction guide for A>",
-// JSON-NEXT: "inner": [
-// JSON-NEXT: {
-// JSON-NEXT: "id": "0x{{.*}}",
-// JSON-NEXT: "kind": "TemplateTypeParmDecl",
-// JSON-NEXT: "loc": {
-// JSON-NEXT: "offset": 2281,
-// JSON-NEXT: "col": 21,
-// JSON-NEXT: "tokLen": 1
-// JSON-NEXT: },
-// JSON-NEXT: "range": {
-// JSON-NEXT: "begin": {
-// JSON-NEXT: "offset": 2272,
-// JSON-NEXT: "col": 12,
-// JSON-NEXT: "tokLen": 8
-// JSON-NEXT: },
-// JSON-NEXT: "end": {
-// JSON-NEXT: "offset": 2281,
-// JSON-NEXT: "col": 21,
-// JSON-NEXT: "tokLen": 1
-// JSON-NEXT: }
-// JSON-NEXT: },
-// JSON-NEXT: "name": "T",
-// JSON-NEXT: "tagUsed": "typename",
-// JSON-NEXT: "depth": 0,
-// JSON-NEXT: "index": 0
-// JSON-NEXT: },
-// JSON-NEXT: {
-// JSON-NEXT: "id": "0x{{.*}}",
-// JSON-NEXT: "kind": "CXXDeductionGuideDecl",
-// JSON-NEXT: "loc": {
-// JSON-NEXT: "offset": 2291,
-// JSON-NEXT: "col": 31,
-// JSON-NEXT: "tokLen": 1
-// JSON-NEXT: },
-// JSON-NEXT: "range": {
-// JSON-NEXT: "begin": {
-// JSON-NEXT: "offset": 2291,
-// JSON-NEXT: "col": 31,
-// JSON-NEXT: "tokLen": 1
-// JSON-NEXT: },
-// JSON-NEXT: "end": {
-// JSON-NEXT: "offset": 2291,
-// JSON-NEXT: "col": 31,
-// JSON-NEXT: "tokLen": 1
-// JSON-NEXT: }
-// JSON-NEXT: },
-// JSON-NEXT: "isImplicit": true,
-// JSON-NEXT: "name": "<deduction guide for A>",
-// JSON-NEXT: "type": {
-// JSON-NEXT: "qualType": "auto (A<T>) -> A<T>"
-// JSON-NEXT: },
-// JSON-NEXT: "inner": [
-// JSON-NEXT: {
-// JSON-NEXT: "id": "0x{{.*}}",
-// JSON-NEXT: "kind": "ParmVarDecl",
-// JSON-NEXT: "loc": {
-// JSON-NEXT: "offset": 2291,
-// JSON-NEXT: "col": 31,
-// JSON-NEXT: "tokLen": 1
-// JSON-NEXT: },
-// JSON-NEXT: "range": {
-// JSON-NEXT: "begin": {
-// JSON-NEXT: "offset": 2291,
-// JSON-NEXT: "col": 31,
-// JSON-NEXT: "tokLen": 1
-// JSON-NEXT: },
-// JSON-NEXT: "end": {
-// JSON-NEXT: "offset": 2291,
-// JSON-NEXT: "col": 31,
-// JSON-NEXT: "tokLen": 1
-// JSON-NEXT: }
-// JSON-NEXT: },
-// JSON-NEXT: "type": {
-// JSON-NEXT: "qualType": "A<T>"
-// JSON-NEXT: }
-// JSON-NEXT: }
-// JSON-NEXT: ]
-// JSON-NEXT: }
-// JSON-NEXT: ]
-// JSON-NEXT: },
-// JSON-NEXT: {
-// JSON-NEXT: "id": "0x{{.*}}",
-// JSON-NEXT: "kind": "FunctionTemplateDecl",
-// JSON-NEXT: "loc": {
-// JSON-NEXT: "offset": 2320,
-// JSON-NEXT: "line": 75,
-// JSON-NEXT: "col": 24,
-// JSON-NEXT: "tokLen": 1
-// JSON-NEXT: },
-// JSON-NEXT: "range": {
-// JSON-NEXT: "begin": {
-// JSON-NEXT: "offset": 2299,
-// JSON-NEXT: "col": 3,
-// JSON-NEXT: "tokLen": 8
-// JSON-NEXT: },
-// JSON-NEXT: "end": {
-// JSON-NEXT: "offset": 2333,
-// JSON-NEXT: "col": 37,
-// JSON-NEXT: "tokLen": 1
-// JSON-NEXT: }
-// JSON-NEXT: },
-// JSON-NEXT: "name": "<deduction guide for A>",
-// JSON-NEXT: "inner": [
-// JSON-NEXT: {
-// JSON-NEXT: "id": "0x{{.*}}",
-// JSON-NEXT: "kind": "TemplateTypeParmDecl",
-// JSON-NEXT: "loc": {
-// JSON-NEXT: "offset": 2317,
-// JSON-NEXT: "col": 21,
-// JSON-NEXT: "tokLen": 1
-// JSON-NEXT: },
-// JSON-NEXT: "range": {
-// JSON-NEXT: "begin": {
-// JSON-NEXT: "offset": 2308,
-// JSON-NEXT: "col": 12,
-// JSON-NEXT: "tokLen": 8
-// JSON-NEXT: },
-// JSON-NEXT: "end": {
-// JSON-NEXT: "offset": 2317,
-// JSON-NEXT: "col": 21,
-// JSON-NEXT: "tokLen": 1
-// JSON-NEXT: }
-// JSON-NEXT: },
-// JSON-NEXT: "isReferenced": true,
-// JSON-NEXT: "name": "T",
-// JSON-NEXT: "tagUsed": "typename",
-// JSON-NEXT: "depth": 0,
-// JSON-NEXT: "index": 0
-// JSON-NEXT: },
-// JSON-NEXT: {
-// JSON-NEXT: "id": "0x{{.*}}",
-// JSON-NEXT: "kind": "CXXDeductionGuideDecl",
-// JSON-NEXT: "loc": {
-// JSON-NEXT: "offset": 2320,
-// JSON-NEXT: "col": 24,
-// JSON-NEXT: "tokLen": 1
-// JSON-NEXT: },
-// JSON-NEXT: "range": {
-// JSON-NEXT: "begin": {
-// JSON-NEXT: "offset": 2320,
-// JSON-NEXT: "col": 24,
-// JSON-NEXT: "tokLen": 1
-// JSON-NEXT: },
-// JSON-NEXT: "end": {
-// JSON-NEXT: "offset": 2333,
-// JSON-NEXT: "col": 37,
-// JSON-NEXT: "tokLen": 1
-// JSON-NEXT: }
-// JSON-NEXT: },
-// JSON-NEXT: "name": "<deduction guide for A>",
-// JSON-NEXT: "type": {
-// JSON-NEXT: "qualType": "auto (T) -> A<int>"
-// JSON-NEXT: },
-// JSON-NEXT: "inner": [
-// JSON-NEXT: {
-// JSON-NEXT: "id": "0x{{.*}}",
-// JSON-NEXT: "kind": "ParmVarDecl",
-// JSON-NEXT: "loc": {
-// JSON-NEXT: "offset": 2323,
-// JSON-NEXT: "col": 27,
-// JSON-NEXT: "tokLen": 1
-// JSON-NEXT: },
-// JSON-NEXT: "range": {
-// JSON-NEXT: "begin": {
-// JSON-NEXT: "offset": 2322,
-// JSON-NEXT: "col": 26,
-// JSON-NEXT: "tokLen": 1
-// JSON-NEXT: },
-// JSON-NEXT: "end": {
-// JSON-NEXT: "offset": 2322,
-// JSON-NEXT: "col": 26,
-// JSON-NEXT: "tokLen": 1
-// JSON-NEXT: }
-// JSON-NEXT: },
-// JSON-NEXT: "type": {
-// JSON-NEXT: "qualType": "T"
-// JSON-NEXT: }
-// JSON-NEXT: }
-// JSON-NEXT: ]
-// JSON-NEXT: }
-// JSON-NEXT: ]
-// JSON-NEXT: }
-// JSON-NEXT: ]
-// JSON-NEXT: },
-// JSON-NEXT: {
-// JSON-NEXT: "id": "0x{{.*}}",
-// JSON-NEXT: "kind": "NamespaceDecl",
-// JSON-NEXT: "loc": {
-// JSON-NEXT: "offset": 2400,
-// JSON-NEXT: "line": 79,
-// JSON-NEXT: "col": 11,
-// JSON-NEXT: "tokLen": 5
-// JSON-NEXT: },
-// JSON-NEXT: "range": {
-// JSON-NEXT: "begin": {
-// JSON-NEXT: "offset": 2390,
-// JSON-NEXT: "col": 1,
-// JSON-NEXT: "tokLen": 9
-// JSON-NEXT: },
-// JSON-NEXT: "end": {
-// JSON-NEXT: "offset": 3297,
-// JSON-NEXT: "line": 103,
-// JSON-NEXT: "col": 1,
-// JSON-NEXT: "tokLen": 1
-// JSON-NEXT: }
-// JSON-NEXT: },
-// JSON-NEXT: "name": "test4",
-// JSON-NEXT: "inner": [
-// JSON-NEXT: {
-// JSON-NEXT: "id": "0x{{.*}}",
-// JSON-NEXT: "kind": "ClassTemplateDecl",
-// JSON-NEXT: "loc": {
-// JSON-NEXT: "offset": 2445,
-// JSON-NEXT: "line": 81,
-// JSON-NEXT: "col": 8,
-// JSON-NEXT: "tokLen": 3
-// JSON-NEXT: },
-// JSON-NEXT: "range": {
-// JSON-NEXT: "begin": {
-// JSON-NEXT: "offset": 2408,
-// JSON-NEXT: "line": 80,
-// JSON-NEXT: "col": 1,
-// JSON-NEXT: "tokLen": 8
-// JSON-NEXT: },
-// JSON-NEXT: "end": {
-// JSON-NEXT: "offset": 2471,
-// JSON-NEXT: "line": 83,
-// JSON-NEXT: "col": 1,
-// JSON-NEXT: "tokLen": 1
-// JSON-NEXT: }
-// JSON-NEXT: },
-// JSON-NEXT: "name": "foo",
-// JSON-NEXT: "inner": [
-// JSON-NEXT: {
-// JSON-NEXT: "id": "0x{{.*}}",
-// JSON-NEXT: "kind": "NonTypeTemplateParmDecl",
-// JSON-NEXT: "loc": {
-// JSON-NEXT: "offset": 2427,
-// JSON-NEXT: "line": 80,
-// JSON-NEXT: "col": 20,
-// JSON-NEXT: "tokLen": 1
-// JSON-NEXT: },
-// JSON-NEXT: "range": {
-// JSON-NEXT: "begin": {
-// JSON-NEXT: "offset": 2418,
-// JSON-NEXT: "col": 11,
-// JSON-NEXT: "tokLen": 8
-// JSON-NEXT: },
-// JSON-NEXT: "end": {
-// JSON-NEXT: "offset": 2427,
-// JSON-NEXT: "col": 20,
-// JSON-NEXT: "tokLen": 1
-// JSON-NEXT: }
-// JSON-NEXT: },
-// JSON-NEXT: "name": "X",
-// JSON-NEXT: "type": {
-// JSON-NEXT: "qualType": "unsigned int"
-// JSON-NEXT: },
-// JSON-NEXT: "depth": 0,
-// JSON-NEXT: "index": 0
-// JSON-NEXT: },
-// JSON-NEXT: {
-// JSON-NEXT: "id": "0x{{.*}}",
-// JSON-NEXT: "kind": "NonTypeTemplateParmDecl",
-// JSON-NEXT: "loc": {
-// JSON-NEXT: "offset": 2435,
-// JSON-NEXT: "col": 28,
-// JSON-NEXT: "tokLen": 1
-// JSON-NEXT: },
-// JSON-NEXT: "range": {
-// JSON-NEXT: "begin": {
-// JSON-NEXT: "offset": 2430,
-// JSON-NEXT: "col": 23,
-// JSON-NEXT: "tokLen": 4
-// JSON-NEXT: },
-// JSON-NEXT: "end": {
-// JSON-NEXT: "offset": 2435,
-// JSON-NEXT: "col": 28,
-// JSON-NEXT: "tokLen": 1
-// JSON-NEXT: }
-// JSON-NEXT: },
-// JSON-NEXT: "name": "A",
-// JSON-NEXT: "type": {
-// JSON-NEXT: "qualType": "auto"
-// JSON-NEXT: },
-// JSON-NEXT: "depth": 0,
-// JSON-NEXT: "index": 1
-// JSON-NEXT: },
-// JSON-NEXT: {
-// JSON-NEXT: "id": "0x{{.*}}",
-// JSON-NEXT: "kind": "CXXRecordDecl",
-// JSON-NEXT: "loc": {
-// JSON-NEXT: "offset": 2445,
-// JSON-NEXT: "line": 81,
-// JSON-NEXT: "col": 8,
-// JSON-NEXT: "tokLen": 3
-// JSON-NEXT: },
-// JSON-NEXT: "range": {
-// JSON-NEXT: "begin": {
-// JSON-NEXT: "offset": 2438,
-// JSON-NEXT: "col": 1,
-// JSON-NEXT: "tokLen": 6
-// JSON-NEXT: },
-// JSON-NEXT: "end": {
-// JSON-NEXT: "offset": 2471,
-// JSON-NEXT: "line": 83,
-// JSON-NEXT: "col": 1,
-// JSON-NEXT: "tokLen": 1
-// JSON-NEXT: }
-// JSON-NEXT: },
-// JSON-NEXT: "name": "foo",
-// JSON-NEXT: "tagUsed": "struct",
-// JSON-NEXT: "completeDefinition": true,
-// JSON-NEXT: "definitionData": {
-// JSON-NEXT: "canConstDefaultInit": true,
-// JSON-NEXT: "copyAssign": {
-// JSON-NEXT: "hasConstParam": true,
-// JSON-NEXT: "implicitHasConstParam": true,
-// JSON-NEXT: "needsImplicit": true,
-// JSON-NEXT: "simple": true,
-// JSON-NEXT: "trivial": true
-// JSON-NEXT: },
-// JSON-NEXT: "copyCtor": {
-// JSON-NEXT: "hasConstParam": true,
-// JSON-NEXT: "implicitHasConstParam": true,
-// JSON-NEXT: "needsImplicit": true,
-// JSON-NEXT: "simple": true,
-// JSON-NEXT: "trivial": true
-// JSON-NEXT: },
-// JSON-NEXT: "defaultCtor": {
-// JSON-NEXT: "defaultedIsConstexpr": true,
-// JSON-NEXT: "exists": true,
-// JSON-NEXT: "isConstexpr": true,
-// JSON-NEXT: "needsImplicit": true,
-// JSON-NEXT: "trivial": true
-// JSON-NEXT: },
-// JSON-NEXT: "dtor": {
-// JSON-NEXT: "irrelevant": true,
-// JSON-NEXT: "needsImplicit": true,
-// JSON-NEXT: "simple": true,
-// JSON-NEXT: "trivial": true
-// JSON-NEXT: },
-// JSON-NEXT: "hasConstexprNonCopyMoveConstructor": true,
-// JSON-NEXT: "isAggregate": true,
-// JSON-NEXT: "isEmpty": true,
-// JSON-NEXT: "isLiteral": true,
-// JSON-NEXT: "isPOD": true,
-// JSON-NEXT: "isStandardLayout": true,
-// JSON-NEXT: "isTrivial": true,
-// JSON-NEXT: "isTriviallyCopyable": true,
-// JSON-NEXT: "moveAssign": {
-// JSON-NEXT: "exists": true,
-// JSON-NEXT: "needsImplicit": true,
-// JSON-NEXT: "simple": true,
-// JSON-NEXT: "trivial": true
-// JSON-NEXT: },
-// JSON-NEXT: "moveCtor": {
-// JSON-NEXT: "exists": true,
-// JSON-NEXT: "needsImplicit": true,
-// JSON-NEXT: "simple": true,
-// JSON-NEXT: "trivial": true
-// JSON-NEXT: }
-// JSON-NEXT: },
-// JSON-NEXT: "inner": [
-// JSON-NEXT: {
-// JSON-NEXT: "id": "0x{{.*}}",
-// JSON-NEXT: "kind": "CXXRecordDecl",
-// JSON-NEXT: "loc": {
-// JSON-NEXT: "offset": 2445,
-// JSON-NEXT: "line": 81,
-// JSON-NEXT: "col": 8,
-// JSON-NEXT: "tokLen": 3
-// JSON-NEXT: },
-// JSON-NEXT: "range": {
-// JSON-NEXT: "begin": {
-// JSON-NEXT: "offset": 2438,
-// JSON-NEXT: "col": 1,
-// JSON-NEXT: "tokLen": 6
-// JSON-NEXT: },
-// JSON-NEXT: "end": {
-// JSON-NEXT: "offset": 2445,
-// JSON-NEXT: "col": 8,
-// JSON-NEXT: "tokLen": 3
-// JSON-NEXT: }
-// JSON-NEXT: },
-// JSON-NEXT: "isImplicit": true,
-// JSON-NEXT: "name": "foo",
-// JSON-NEXT: "tagUsed": "struct"
-// JSON-NEXT: },
-// JSON-NEXT: {
-// JSON-NEXT: "id": "0x{{.*}}",
-// JSON-NEXT: "kind": "CXXMethodDecl",
-// JSON-NEXT: "loc": {
-// JSON-NEXT: "offset": 2465,
-// JSON-NEXT: "line": 82,
-// JSON-NEXT: "col": 15,
-// JSON-NEXT: "tokLen": 2
-// JSON-NEXT: },
-// JSON-NEXT: "range": {
-// JSON-NEXT: "begin": {
-// JSON-NEXT: "offset": 2453,
-// JSON-NEXT: "col": 3,
-// JSON-NEXT: "tokLen": 6
-// JSON-NEXT: },
-// JSON-NEXT: "end": {
-// JSON-NEXT: "offset": 2468,
-// JSON-NEXT: "col": 18,
-// JSON-NEXT: "tokLen": 1
-// JSON-NEXT: }
-// JSON-NEXT: },
-// JSON-NEXT: "name": "fn",
-// JSON-NEXT: "type": {
-// JSON-NEXT: "qualType": "void ()"
-// JSON-NEXT: },
-// JSON-NEXT: "storageClass": "static"
-// JSON-NEXT: }
-// JSON-NEXT: ]
-// JSON-NEXT: },
-// JSON-NEXT: {
-// JSON-NEXT: "id": "0x{{.*}}",
-// JSON-NEXT: "kind": "ClassTemplateSpecializationDecl",
-// JSON-NEXT: "loc": {
-// JSON-NEXT: "offset": 2445,
-// JSON-NEXT: "line": 81,
-// JSON-NEXT: "col": 8,
-// JSON-NEXT: "tokLen": 3
-// JSON-NEXT: },
-// JSON-NEXT: "range": {
-// JSON-NEXT: "begin": {
-// JSON-NEXT: "offset": 2408,
-// JSON-NEXT: "line": 80,
-// JSON-NEXT: "col": 1,
-// JSON-NEXT: "tokLen": 8
-// JSON-NEXT: },
-// JSON-NEXT: "end": {
-// JSON-NEXT: "offset": 2471,
-// JSON-NEXT: "line": 83,
-// JSON-NEXT: "col": 1,
-// JSON-NEXT: "tokLen": 1
-// JSON-NEXT: }
-// JSON-NEXT: },
-// JSON-NEXT: "name": "foo",
-// JSON-NEXT: "tagUsed": "struct",
-// JSON-NEXT: "completeDefinition": true,
-// JSON-NEXT: "definitionData": {
-// JSON-NEXT: "canConstDefaultInit": true,
-// JSON-NEXT: "canPassInRegisters": true,
-// JSON-NEXT: "copyAssign": {
-// JSON-NEXT: "hasConstParam": true,
-// JSON-NEXT: "implicitHasConstParam": true,
-// JSON-NEXT: "needsImplicit": true,
-// JSON-NEXT: "simple": true,
-// JSON-NEXT: "trivial": true
-// JSON-NEXT: },
-// JSON-NEXT: "copyCtor": {
-// JSON-NEXT: "hasConstParam": true,
-// JSON-NEXT: "implicitHasConstParam": true,
-// JSON-NEXT: "needsImplicit": true,
-// JSON-NEXT: "simple": true,
-// JSON-NEXT: "trivial": true
-// JSON-NEXT: },
-// JSON-NEXT: "defaultCtor": {
-// JSON-NEXT: "defaultedIsConstexpr": true,
-// JSON-NEXT: "exists": true,
-// JSON-NEXT: "isConstexpr": true,
-// JSON-NEXT: "needsImplicit": true,
-// JSON-NEXT: "trivial": true
-// JSON-NEXT: },
-// JSON-NEXT: "dtor": {
-// JSON-NEXT: "irrelevant": true,
-// JSON-NEXT: "needsImplicit": true,
-// JSON-NEXT: "simple": true,
-// JSON-NEXT: "trivial": true
-// JSON-NEXT: },
-// JSON-NEXT: "hasConstexprNonCopyMoveConstructor": true,
-// JSON-NEXT: "isAggregate": true,
-// JSON-NEXT: "isEmpty": true,
-// JSON-NEXT: "isLiteral": true,
-// JSON-NEXT: "isPOD": true,
-// JSON-NEXT: "isStandardLayout": true,
-// JSON-NEXT: "isTrivial": true,
-// JSON-NEXT: "isTriviallyCopyable": true,
-// JSON-NEXT: "moveAssign": {
-// JSON-NEXT: "exists": true,
-// JSON-NEXT: "needsImplicit": true,
-// JSON-NEXT: "simple": true,
-// JSON-NEXT: "trivial": true
-// JSON-NEXT: },
-// JSON-NEXT: "moveCtor": {
-// JSON-NEXT: "exists": true,
-// JSON-NEXT: "needsImplicit": true,
-// JSON-NEXT: "simple": true,
-// JSON-NEXT: "trivial": true
-// JSON-NEXT: }
-// JSON-NEXT: },
-// JSON-NEXT: "inner": [
-// JSON-NEXT: {
-// JSON-NEXT: "kind": "TemplateArgument",
-// JSON-NEXT: "value": 0
-// JSON-NEXT: },
-// JSON-NEXT: {
-// JSON-NEXT: "kind": "TemplateArgument",
-// JSON-NEXT: "value": 0
-// JSON-NEXT: },
-// JSON-NEXT: {
-// JSON-NEXT: "id": "0x{{.*}}",
-// JSON-NEXT: "kind": "CXXRecordDecl",
-// JSON-NEXT: "loc": {
-// JSON-NEXT: "offset": 2445,
-// JSON-NEXT: "line": 81,
-// JSON-NEXT: "col": 8,
-// JSON-NEXT: "tokLen": 3
-// JSON-NEXT: },
-// JSON-NEXT: "range": {
-// JSON-NEXT: "begin": {
-// JSON-NEXT: "offset": 2438,
-// JSON-NEXT: "col": 1,
-// JSON-NEXT: "tokLen": 6
-// JSON-NEXT: },
-// JSON-NEXT: "end": {
-// JSON-NEXT: "offset": 2445,
-// JSON-NEXT: "col": 8,
-// JSON-NEXT: "tokLen": 3
-// JSON-NEXT: }
-// JSON-NEXT: },
-// JSON-NEXT: "isImplicit": true,
-// JSON-NEXT: "name": "foo",
-// JSON-NEXT: "tagUsed": "struct"
-// JSON-NEXT: },
-// JSON-NEXT: {
-// JSON-NEXT: "id": "0x{{.*}}",
-// JSON-NEXT: "kind": "CXXMethodDecl",
-// JSON-NEXT: "loc": {
-// JSON-NEXT: "offset": 2465,
-// JSON-NEXT: "line": 82,
-// JSON-NEXT: "col": 15,
-// JSON-NEXT: "tokLen": 2
-// JSON-NEXT: },
-// JSON-NEXT: "range": {
-// JSON-NEXT: "begin": {
-// JSON-NEXT: "offset": 2453,
-// JSON-NEXT: "col": 3,
-// JSON-NEXT: "tokLen": 6
-// JSON-NEXT: },
-// JSON-NEXT: "end": {
-// JSON-NEXT: "offset": 2468,
-// JSON-NEXT: "col": 18,
-// JSON-NEXT: "tokLen": 1
-// JSON-NEXT: }
-// JSON-NEXT: },
-// JSON-NEXT: "isUsed": true,
-// JSON-NEXT: "name": "fn",
-// JSON-NEXT: "mangledName": "_ZN5test43fooILj0ELl0EE2fnEv",
-// JSON-NEXT: "type": {
-// JSON-NEXT: "qualType": "void ()"
-// JSON-NEXT: },
-// JSON-NEXT: "storageClass": "static"
-// JSON-NEXT: }
-// JSON-NEXT: ]
-// JSON-NEXT: },
-// JSON-NEXT: {
-// JSON-NEXT: "id": "0x{{.*}}",
-// JSON-NEXT: "kind": "ClassTemplateSpecializationDecl",
-// JSON-NEXT: "name": "foo"
-// JSON-NEXT: }
-// JSON-NEXT: ]
-// JSON-NEXT: },
-// JSON-NEXT: {
-// JSON-NEXT: "id": "0x{{.*}}",
-// JSON-NEXT: "kind": "FunctionDecl",
-// JSON-NEXT: "loc": {
-// JSON-NEXT: "offset": 2846,
-// JSON-NEXT: "line": 92,
-// JSON-NEXT: "col": 6,
-// JSON-NEXT: "tokLen": 4
-// JSON-NEXT: },
-// JSON-NEXT: "range": {
-// JSON-NEXT: "begin": {
-// JSON-NEXT: "offset": 2841,
-// JSON-NEXT: "col": 1,
-// JSON-NEXT: "tokLen": 4
-// JSON-NEXT: },
-// JSON-NEXT: "end": {
-// JSON-NEXT: "offset": 2879,
-// JSON-NEXT: "line": 94,
-// JSON-NEXT: "col": 1,
-// JSON-NEXT: "tokLen": 1
-// JSON-NEXT: }
-// JSON-NEXT: },
-// JSON-NEXT: "name": "test",
-// JSON-NEXT: "mangledName": "_ZN5test44testEv",
-// JSON-NEXT: "type": {
-// JSON-NEXT: "qualType": "void ()"
-// JSON-NEXT: },
-// JSON-NEXT: "inner": [
-// JSON-NEXT: {
-// JSON-NEXT: "id": "0x{{.*}}",
-// JSON-NEXT: "kind": "CompoundStmt",
-// JSON-NEXT: "range": {
-// JSON-NEXT: "begin": {
-// JSON-NEXT: "offset": 2853,
-// JSON-NEXT: "line": 92,
-// JSON-NEXT: "col": 13,
-// JSON-NEXT: "tokLen": 1
-// JSON-NEXT: },
-// JSON-NEXT: "end": {
-// JSON-NEXT: "offset": 2879,
-// JSON-NEXT: "line": 94,
-// JSON-NEXT: "col": 1,
-// JSON-NEXT: "tokLen": 1
-// JSON-NEXT: }
-// JSON-NEXT: },
-// JSON-NEXT: "inner": [
-// JSON-NEXT: {
-// JSON-NEXT: "id": "0x{{.*}}",
-// JSON-NEXT: "kind": "CallExpr",
-// JSON-NEXT: "range": {
-// JSON-NEXT: "begin": {
-// JSON-NEXT: "offset": 2857,
-// JSON-NEXT: "line": 93,
-// JSON-NEXT: "col": 3,
-// JSON-NEXT: "tokLen": 3
-// JSON-NEXT: },
-// JSON-NEXT: "end": {
-// JSON-NEXT: "offset": 2876,
-// JSON-NEXT: "col": 22,
-// JSON-NEXT: "tokLen": 1
-// JSON-NEXT: }
-// JSON-NEXT: },
-// JSON-NEXT: "type": {
-// JSON-NEXT: "qualType": "void"
-// JSON-NEXT: },
-// JSON-NEXT: "valueCategory": "prvalue",
-// JSON-NEXT: "inner": [
-// JSON-NEXT: {
-// JSON-NEXT: "id": "0x{{.*}}",
-// JSON-NEXT: "kind": "ImplicitCastExpr",
-// JSON-NEXT: "range": {
-// JSON-NEXT: "begin": {
-// JSON-NEXT: "offset": 2857,
-// JSON-NEXT: "col": 3,
-// JSON-NEXT: "tokLen": 3
-// JSON-NEXT: },
-// JSON-NEXT: "end": {
-// JSON-NEXT: "offset": 2873,
-// JSON-NEXT: "col": 19,
-// JSON-NEXT: "tokLen": 2
-// JSON-NEXT: }
-// JSON-NEXT: },
-// JSON-NEXT: "type": {
-// JSON-NEXT: "qualType": "void (*)()"
-// JSON-NEXT: },
-// JSON-NEXT: "valueCategory": "prvalue",
-// JSON-NEXT: "castKind": "FunctionToPointerDecay",
-// JSON-NEXT: "inner": [
-// JSON-NEXT: {
-// JSON-NEXT: "id": "0x{{.*}}",
-// JSON-NEXT: "kind": "DeclRefExpr",
-// JSON-NEXT: "range": {
-// JSON-NEXT: "begin": {
-// JSON-NEXT: "offset": 2857,
-// JSON-NEXT: "col": 3,
-// JSON-NEXT: "tokLen": 3
-// JSON-NEXT: },
-// JSON-NEXT: "end": {
-// JSON-NEXT: "offset": 2873,
-// JSON-NEXT: "col": 19,
-// JSON-NEXT: "tokLen": 2
-// JSON-NEXT: }
-// JSON-NEXT: },
-// JSON-NEXT: "type": {
-// JSON-NEXT: "qualType": "void ()"
-// JSON-NEXT: },
-// JSON-NEXT: "valueCategory": "lvalue",
-// JSON-NEXT: "referencedDecl": {
-// JSON-NEXT: "id": "0x{{.*}}",
-// JSON-NEXT: "kind": "CXXMethodDecl",
-// JSON-NEXT: "name": "fn",
-// JSON-NEXT: "type": {
-// JSON-NEXT: "qualType": "void ()"
-// JSON-NEXT: }
-// JSON-NEXT: }
-// JSON-NEXT: }
-// JSON-NEXT: ]
-// JSON-NEXT: }
-// JSON-NEXT: ]
-// JSON-NEXT: }
-// JSON-NEXT: ]
-// JSON-NEXT: }
-// JSON-NEXT: ]
-// JSON-NEXT: },
-// JSON-NEXT: {
-// JSON-NEXT: "id": "0x{{.*}}",
-// JSON-NEXT: "kind": "ClassTemplateSpecializationDecl",
-// JSON-NEXT: "loc": {
-// JSON-NEXT: "offset": 3281,
-// JSON-NEXT: "line": 102,
-// JSON-NEXT: "col": 17,
-// JSON-NEXT: "tokLen": 3
-// JSON-NEXT: },
-// JSON-NEXT: "range": {
-// JSON-NEXT: "begin": {
-// JSON-NEXT: "offset": 3265,
-// JSON-NEXT: "col": 1,
-// JSON-NEXT: "tokLen": 8
-// JSON-NEXT: },
-// JSON-NEXT: "end": {
-// JSON-NEXT: "offset": 3294,
-// JSON-NEXT: "col": 30,
-// JSON-NEXT: "tokLen": 1
-// JSON-NEXT: }
-// JSON-NEXT: },
-// JSON-NEXT: "name": "foo",
-// JSON-NEXT: "tagUsed": "struct",
-// JSON-NEXT: "completeDefinition": true,
-// JSON-NEXT: "definitionData": {
-// JSON-NEXT: "canConstDefaultInit": true,
-// JSON-NEXT: "canPassInRegisters": true,
-// JSON-NEXT: "copyAssign": {
-// JSON-NEXT: "hasConstParam": true,
-// JSON-NEXT: "implicitHasConstParam": true,
-// JSON-NEXT: "needsImplicit": true,
-// JSON-NEXT: "simple": true,
-// JSON-NEXT: "trivial": true
-// JSON-NEXT: },
-// JSON-NEXT: "copyCtor": {
-// JSON-NEXT: "hasConstParam": true,
-// JSON-NEXT: "implicitHasConstParam": true,
-// JSON-NEXT: "needsImplicit": true,
-// JSON-NEXT: "simple": true,
-// JSON-NEXT: "trivial": true
-// JSON-NEXT: },
-// JSON-NEXT: "defaultCtor": {
-// JSON-NEXT: "defaultedIsConstexpr": true,
-// JSON-NEXT: "exists": true,
-// JSON-NEXT: "isConstexpr": true,
-// JSON-NEXT: "needsImplicit": true,
-// JSON-NEXT: "trivial": true
-// JSON-NEXT: },
-// JSON-NEXT: "dtor": {
-// JSON-NEXT: "irrelevant": true,
-// JSON-NEXT: "needsImplicit": true,
-// JSON-NEXT: "simple": true,
-// JSON-NEXT: "trivial": true
-// JSON-NEXT: },
-// JSON-NEXT: "hasConstexprNonCopyMoveConstructor": true,
-// JSON-NEXT: "isAggregate": true,
-// JSON-NEXT: "isEmpty": true,
-// JSON-NEXT: "isLiteral": true,
-// JSON-NEXT: "isPOD": true,
-// JSON-NEXT: "isStandardLayout": true,
-// JSON-NEXT: "isTrivial": true,
-// JSON-NEXT: "isTriviallyCopyable": true,
-// JSON-NEXT: "moveAssign": {
-// JSON-NEXT: "exists": true,
-// JSON-NEXT: "needsImplicit": true,
-// JSON-NEXT: "simple": true,
-// JSON-NEXT: "trivial": true
-// JSON-NEXT: },
-// JSON-NEXT: "moveCtor": {
-// JSON-NEXT: "exists": true,
-// JSON-NEXT: "needsImplicit": true,
-// JSON-NEXT: "simple": true,
-// JSON-NEXT: "trivial": true
-// JSON-NEXT: }
-// JSON-NEXT: },
-// JSON-NEXT: "inner": [
-// JSON-NEXT: {
-// JSON-NEXT: "kind": "TemplateArgument",
-// JSON-NEXT: "value": 1
-// JSON-NEXT: },
-// JSON-NEXT: {
-// JSON-NEXT: "kind": "TemplateArgument",
-// JSON-NEXT: "value": 0
-// JSON-NEXT: },
-// JSON-NEXT: {
-// JSON-NEXT: "id": "0x{{.*}}",
-// JSON-NEXT: "kind": "CXXRecordDecl",
-// JSON-NEXT: "loc": {
-// JSON-NEXT: "offset": 2445,
-// JSON-NEXT: "line": 81,
-// JSON-NEXT: "col": 8,
-// JSON-NEXT: "tokLen": 3
-// JSON-NEXT: },
-// JSON-NEXT: "range": {
-// JSON-NEXT: "begin": {
-// JSON-NEXT: "offset": 2438,
-// JSON-NEXT: "col": 1,
-// JSON-NEXT: "tokLen": 6
-// JSON-NEXT: },
-// JSON-NEXT: "end": {
-// JSON-NEXT: "offset": 2445,
-// JSON-NEXT: "col": 8,
-// JSON-NEXT: "tokLen": 3
-// JSON-NEXT: }
-// JSON-NEXT: },
-// JSON-NEXT: "isImplicit": true,
-// JSON-NEXT: "name": "foo",
-// JSON-NEXT: "tagUsed": "struct"
-// JSON-NEXT: },
-// JSON-NEXT: {
-// JSON-NEXT: "id": "0x{{.*}}",
-// JSON-NEXT: "kind": "CXXMethodDecl",
-// JSON-NEXT: "loc": {
-// JSON-NEXT: "offset": 2465,
-// JSON-NEXT: "line": 82,
-// JSON-NEXT: "col": 15,
-// JSON-NEXT: "tokLen": 2
-// JSON-NEXT: },
-// JSON-NEXT: "range": {
-// JSON-NEXT: "begin": {
-// JSON-NEXT: "offset": 2453,
-// JSON-NEXT: "col": 3,
-// JSON-NEXT: "tokLen": 6
-// JSON-NEXT: },
-// JSON-NEXT: "end": {
-// JSON-NEXT: "offset": 2468,
-// JSON-NEXT: "col": 18,
-// JSON-NEXT: "tokLen": 1
-// JSON-NEXT: }
-// JSON-NEXT: },
-// JSON-NEXT: "name": "fn",
-// JSON-NEXT: "mangledName": "_ZN5test43fooILj1ELl0EE2fnEv",
-// JSON-NEXT: "type": {
-// JSON-NEXT: "qualType": "void ()"
-// JSON-NEXT: },
-// JSON-NEXT: "storageClass": "static"
-// JSON-NEXT: }
-// JSON-NEXT: ]
-// JSON-NEXT: }
-// JSON-NEXT: ]
-// JSON-NEXT: },
-// JSON-NEXT: {
-// JSON-NEXT: "id": "0x{{.*}}",
-// JSON-NEXT: "kind": "NamespaceDecl",
-// JSON-NEXT: "loc": {
-// JSON-NEXT: "offset": 3310,
-// JSON-NEXT: "line": 105,
-// JSON-NEXT: "col": 11,
-// JSON-NEXT: "tokLen": 5
-// JSON-NEXT: },
-// JSON-NEXT: "range": {
-// JSON-NEXT: "begin": {
-// JSON-NEXT: "offset": 3300,
-// JSON-NEXT: "col": 1,
-// JSON-NEXT: "tokLen": 9
-// JSON-NEXT: },
-// JSON-NEXT: "end": {
-// JSON-NEXT: "offset": 3632,
-// JSON-NEXT: "line": 114,
-// JSON-NEXT: "col": 1,
-// JSON-NEXT: "tokLen": 1
-// JSON-NEXT: }
-// JSON-NEXT: },
-// JSON-NEXT: "name": "test5",
-// JSON-NEXT: "inner": [
-// JSON-NEXT: {
-// JSON-NEXT: "id": "0x{{.*}}",
-// JSON-NEXT: "kind": "FunctionTemplateDecl",
-// JSON-NEXT: "loc": {
-// JSON-NEXT: "offset": 3338,
-// JSON-NEXT: "line": 106,
-// JSON-NEXT: "col": 21,
-// JSON-NEXT: "tokLen": 1
-// JSON-NEXT: },
-// JSON-NEXT: "range": {
-// JSON-NEXT: "begin": {
-// JSON-NEXT: "offset": 3318,
-// JSON-NEXT: "col": 1,
-// JSON-NEXT: "tokLen": 8
-// JSON-NEXT: },
-// JSON-NEXT: "end": {
-// JSON-NEXT: "offset": 3343,
-// JSON-NEXT: "col": 26,
-// JSON-NEXT: "tokLen": 1
-// JSON-NEXT: }
-// JSON-NEXT: },
-// JSON-NEXT: "name": "f",
-// JSON-NEXT: "inner": [
-// JSON-NEXT: {
-// JSON-NEXT: "id": "0x{{.*}}",
-// JSON-NEXT: "kind": "NonTypeTemplateParmDecl",
-// JSON-NEXT: "loc": {
-// JSON-NEXT: "offset": 3331,
-// JSON-NEXT: "col": 14,
-// JSON-NEXT: "tokLen": 1
-// JSON-NEXT: },
-// JSON-NEXT: "range": {
-// JSON-NEXT: "begin": {
-// JSON-NEXT: "offset": 3327,
-// JSON-NEXT: "col": 10,
-// JSON-NEXT: "tokLen": 4
-// JSON-NEXT: },
-// JSON-NEXT: "end": {
-// JSON-NEXT: "offset": 3327,
-// JSON-NEXT: "col": 10,
-// JSON-NEXT: "tokLen": 4
-// JSON-NEXT: }
-// JSON-NEXT: },
-// JSON-NEXT: "type": {
-// JSON-NEXT: "qualType": "long"
-// JSON-NEXT: },
-// JSON-NEXT: "depth": 0,
-// JSON-NEXT: "index": 0
-// JSON-NEXT: },
-// JSON-NEXT: {
-// JSON-NEXT: "id": "0x{{.*}}",
-// JSON-NEXT: "kind": "FunctionDecl",
-// JSON-NEXT: "loc": {
-// JSON-NEXT: "offset": 3338,
-// JSON-NEXT: "col": 21,
-// JSON-NEXT: "tokLen": 1
-// JSON-NEXT: },
-// JSON-NEXT: "range": {
-// JSON-NEXT: "begin": {
-// JSON-NEXT: "offset": 3333,
-// JSON-NEXT: "col": 16,
-// JSON-NEXT: "tokLen": 4
-// JSON-NEXT: },
-// JSON-NEXT: "end": {
-// JSON-NEXT: "offset": 3343,
-// JSON-NEXT: "col": 26,
-// JSON-NEXT: "tokLen": 1
-// JSON-NEXT: }
-// JSON-NEXT: },
-// JSON-NEXT: "name": "f",
-// JSON-NEXT: "type": {
-// JSON-NEXT: "qualType": "void ()"
-// JSON-NEXT: },
-// JSON-NEXT: "inner": [
-// JSON-NEXT: {
-// JSON-NEXT: "id": "0x{{.*}}",
-// JSON-NEXT: "kind": "CompoundStmt",
-// JSON-NEXT: "range": {
-// JSON-NEXT: "begin": {
-// JSON-NEXT: "offset": 3342,
-// JSON-NEXT: "col": 25,
-// JSON-NEXT: "tokLen": 1
-// JSON-NEXT: },
-// JSON-NEXT: "end": {
-// JSON-NEXT: "offset": 3343,
-// JSON-NEXT: "col": 26,
-// JSON-NEXT: "tokLen": 1
-// JSON-NEXT: }
-// JSON-NEXT: }
-// JSON-NEXT: }
-// JSON-NEXT: ]
-// JSON-NEXT: },
-// JSON-NEXT: {
-// JSON-NEXT: "id": "0x{{.*}}",
-// JSON-NEXT: "kind": "FunctionDecl",
-// JSON-NEXT: "loc": {
-// JSON-NEXT: "offset": 3338,
-// JSON-NEXT: "col": 21,
-// JSON-NEXT: "tokLen": 1
-// JSON-NEXT: },
-// JSON-NEXT: "range": {
-// JSON-NEXT: "begin": {
-// JSON-NEXT: "offset": 3333,
-// JSON-NEXT: "col": 16,
-// JSON-NEXT: "tokLen": 4
-// JSON-NEXT: },
-// JSON-NEXT: "end": {
-// JSON-NEXT: "offset": 3343,
-// JSON-NEXT: "col": 26,
-// JSON-NEXT: "tokLen": 1
-// JSON-NEXT: }
-// JSON-NEXT: },
-// JSON-NEXT: "isUsed": true,
-// JSON-NEXT: "name": "f",
-// JSON-NEXT: "mangledName": "_ZN5test51fILl0EEEvv",
-// JSON-NEXT: "type": {
-// JSON-NEXT: "qualType": "void ()"
-// JSON-NEXT: },
-// JSON-NEXT: "inner": [
-// JSON-NEXT: {
-// JSON-NEXT: "kind": "TemplateArgument",
-// JSON-NEXT: "value": 0
-// JSON-NEXT: },
-// JSON-NEXT: {
-// JSON-NEXT: "id": "0x{{.*}}",
-// JSON-NEXT: "kind": "CompoundStmt",
-// JSON-NEXT: "range": {
-// JSON-NEXT: "begin": {
-// JSON-NEXT: "offset": 3342,
-// JSON-NEXT: "col": 25,
-// JSON-NEXT: "tokLen": 1
-// JSON-NEXT: },
-// JSON-NEXT: "end": {
-// JSON-NEXT: "offset": 3343,
-// JSON-NEXT: "col": 26,
-// JSON-NEXT: "tokLen": 1
-// JSON-NEXT: }
-// JSON-NEXT: }
-// JSON-NEXT: }
-// JSON-NEXT: ]
-// JSON-NEXT: }
-// JSON-NEXT: ]
-// JSON-NEXT: },
-// JSON-NEXT: {
-// JSON-NEXT: "id": "0x{{.*}}",
-// JSON-NEXT: "kind": "VarDecl",
-// JSON-NEXT: "loc": {
-// JSON-NEXT: "offset": 3352,
-// JSON-NEXT: "line": 107,
-// JSON-NEXT: "col": 8,
-// JSON-NEXT: "tokLen": 1
-// JSON-NEXT: },
-// JSON-NEXT: "range": {
-// JSON-NEXT: "begin": {
-// JSON-NEXT: "offset": 3345,
-// JSON-NEXT: "col": 1,
-// JSON-NEXT: "tokLen": 4
-// JSON-NEXT: },
-// JSON-NEXT: "end": {
-// JSON-NEXT: "offset": 3362,
-// JSON-NEXT: "col": 18,
-// JSON-NEXT: "tokLen": 1
-// JSON-NEXT: }
-// JSON-NEXT: },
-// JSON-NEXT: "name": "p",
-// JSON-NEXT: "mangledName": "_ZN5test51pE",
-// JSON-NEXT: "type": {
-// JSON-NEXT: "qualType": "void (*)()"
-// JSON-NEXT: },
-// JSON-NEXT: "init": "c",
-// JSON-NEXT: "inner": [
-// JSON-NEXT: {
-// JSON-NEXT: "id": "0x{{.*}}",
-// JSON-NEXT: "kind": "ImplicitCastExpr",
-// JSON-NEXT: "range": {
-// JSON-NEXT: "begin": {
-// JSON-NEXT: "offset": 3359,
-// JSON-NEXT: "col": 15,
-// JSON-NEXT: "tokLen": 1
-// JSON-NEXT: },
-// JSON-NEXT: "end": {
-// JSON-NEXT: "offset": 3362,
-// JSON-NEXT: "col": 18,
-// JSON-NEXT: "tokLen": 1
-// JSON-NEXT: }
-// JSON-NEXT: },
-// JSON-NEXT: "type": {
-// JSON-NEXT: "qualType": "void (*)()"
-// JSON-NEXT: },
-// JSON-NEXT: "valueCategory": "prvalue",
-// JSON-NEXT: "castKind": "FunctionToPointerDecay",
-// JSON-NEXT: "inner": [
-// JSON-NEXT: {
-// JSON-NEXT: "id": "0x{{.*}}",
-// JSON-NEXT: "kind": "DeclRefExpr",
-// JSON-NEXT: "range": {
-// JSON-NEXT: "begin": {
-// JSON-NEXT: "offset": 3359,
-// JSON-NEXT: "col": 15,
-// JSON-NEXT: "tokLen": 1
-// JSON-NEXT: },
-// JSON-NEXT: "end": {
-// JSON-NEXT: "offset": 3362,
-// JSON-NEXT: "col": 18,
-// JSON-NEXT: "tokLen": 1
-// JSON-NEXT: }
-// JSON-NEXT: },
-// JSON-NEXT: "type": {
-// JSON-NEXT: "qualType": "void ()"
-// JSON-NEXT: },
-// JSON-NEXT: "valueCategory": "lvalue",
-// JSON-NEXT: "referencedDecl": {
-// JSON-NEXT: "id": "0x{{.*}}",
-// JSON-NEXT: "kind": "FunctionDecl",
-// JSON-NEXT: "name": "f",
-// JSON-NEXT: "type": {
-// JSON-NEXT: "qualType": "void ()"
-// JSON-NEXT: }
-// JSON-NEXT: },
-// JSON-NEXT: "foundReferencedDecl": {
-// JSON-NEXT: "id": "0x{{.*}}",
-// JSON-NEXT: "kind": "FunctionTemplateDecl",
-// JSON-NEXT: "name": "f"
-// JSON-NEXT: }
-// JSON-NEXT: }
-// JSON-NEXT: ]
-// JSON-NEXT: }
-// JSON-NEXT: ]
-// JSON-NEXT: },
-// JSON-NEXT: {
-// JSON-NEXT: "id": "0x{{.*}}",
-// JSON-NEXT: "kind": "FunctionTemplateDecl",
-// JSON-NEXT: "loc": {
-// JSON-NEXT: "offset": 3393,
-// JSON-NEXT: "line": 108,
-// JSON-NEXT: "col": 29,
-// JSON-NEXT: "tokLen": 1
-// JSON-NEXT: },
-// JSON-NEXT: "range": {
-// JSON-NEXT: "begin": {
-// JSON-NEXT: "offset": 3365,
-// JSON-NEXT: "col": 1,
-// JSON-NEXT: "tokLen": 8
-// JSON-NEXT: },
-// JSON-NEXT: "end": {
-// JSON-NEXT: "offset": 3398,
-// JSON-NEXT: "col": 34,
-// JSON-NEXT: "tokLen": 1
-// JSON-NEXT: }
-// JSON-NEXT: },
-// JSON-NEXT: "name": "f",
-// JSON-NEXT: "inner": [
-// JSON-NEXT: {
-// JSON-NEXT: "id": "0x{{.*}}",
-// JSON-NEXT: "kind": "NonTypeTemplateParmDecl",
-// JSON-NEXT: "loc": {
-// JSON-NEXT: "offset": 3383,
-// JSON-NEXT: "col": 19,
-// JSON-NEXT: "tokLen": 1
-// JSON-NEXT: },
-// JSON-NEXT: "range": {
-// JSON-NEXT: "begin": {
-// JSON-NEXT: "offset": 3374,
-// JSON-NEXT: "col": 10,
-// JSON-NEXT: "tokLen": 8
-// JSON-NEXT: },
-// JSON-NEXT: "end": {
-// JSON-NEXT: "offset": 3385,
-// JSON-NEXT: "col": 21,
-// JSON-NEXT: "tokLen": 1
-// JSON-NEXT: }
-// JSON-NEXT: },
-// JSON-NEXT: "type": {
-// JSON-NEXT: "qualType": "unsigned int"
-// JSON-NEXT: },
-// JSON-NEXT: "depth": 0,
-// JSON-NEXT: "index": 0,
-// JSON-NEXT: "defaultArg": {
-// JSON-NEXT: "kind": "TemplateArgument",
-// JSON-NEXT: "isExpr": true
-// JSON-NEXT: },
-// JSON-NEXT: "inner": [
-// JSON-NEXT: {
-// JSON-NEXT: "kind": "TemplateArgument",
-// JSON-NEXT: "range": {
-// JSON-NEXT: "begin": {
-// JSON-NEXT: "offset": 3385,
-// JSON-NEXT: "col": 21,
-// JSON-NEXT: "tokLen": 1
-// JSON-NEXT: },
-// JSON-NEXT: "end": {
-// JSON-NEXT: "offset": 3385,
-// JSON-NEXT: "col": 21,
-// JSON-NEXT: "tokLen": 1
-// JSON-NEXT: }
-// JSON-NEXT: },
-// JSON-NEXT: "isExpr": true,
-// JSON-NEXT: "inner": [
-// JSON-NEXT: {
-// JSON-NEXT: "id": "0x{{.*}}",
-// JSON-NEXT: "kind": "IntegerLiteral",
-// JSON-NEXT: "range": {
-// JSON-NEXT: "begin": {
-// JSON-NEXT: "offset": 3385,
-// JSON-NEXT: "col": 21,
-// JSON-NEXT: "tokLen": 1
-// JSON-NEXT: },
-// JSON-NEXT: "end": {
-// JSON-NEXT: "offset": 3385,
-// JSON-NEXT: "col": 21,
-// JSON-NEXT: "tokLen": 1
-// JSON-NEXT: }
-// JSON-NEXT: },
-// JSON-NEXT: "type": {
-// JSON-NEXT: "qualType": "int"
-// JSON-NEXT: },
-// JSON-NEXT: "valueCategory": "prvalue",
-// JSON-NEXT: "value": "0"
-// JSON-NEXT: }
-// JSON-NEXT: ]
-// JSON-NEXT: }
-// JSON-NEXT: ]
-// JSON-NEXT: },
-// JSON-NEXT: {
-// JSON-NEXT: "id": "0x{{.*}}",
-// JSON-NEXT: "kind": "FunctionDecl",
-// JSON-NEXT: "loc": {
-// JSON-NEXT: "offset": 3393,
-// JSON-NEXT: "col": 29,
-// JSON-NEXT: "tokLen": 1
-// JSON-NEXT: },
-// JSON-NEXT: "range": {
-// JSON-NEXT: "begin": {
-// JSON-NEXT: "offset": 3388,
-// JSON-NEXT: "col": 24,
-// JSON-NEXT: "tokLen": 4
-// JSON-NEXT: },
-// JSON-NEXT: "end": {
-// JSON-NEXT: "offset": 3398,
-// JSON-NEXT: "col": 34,
-// JSON-NEXT: "tokLen": 1
-// JSON-NEXT: }
-// JSON-NEXT: },
-// JSON-NEXT: "name": "f",
-// JSON-NEXT: "type": {
-// JSON-NEXT: "qualType": "void ()"
-// JSON-NEXT: },
-// JSON-NEXT: "inner": [
-// JSON-NEXT: {
-// JSON-NEXT: "id": "0x{{.*}}",
-// JSON-NEXT: "kind": "CompoundStmt",
-// JSON-NEXT: "range": {
-// JSON-NEXT: "begin": {
-// JSON-NEXT: "offset": 3397,
-// JSON-NEXT: "col": 33,
-// JSON-NEXT: "tokLen": 1
-// JSON-NEXT: },
-// JSON-NEXT: "end": {
-// JSON-NEXT: "offset": 3398,
-// JSON-NEXT: "col": 34,
-// JSON-NEXT: "tokLen": 1
-// JSON-NEXT: }
-// JSON-NEXT: }
-// JSON-NEXT: }
-// JSON-NEXT: ]
-// JSON-NEXT: },
-// JSON-NEXT: {
-// JSON-NEXT: "id": "0x{{.*}}",
-// JSON-NEXT: "kind": "FunctionDecl",
-// JSON-NEXT: "loc": {
-// JSON-NEXT: "offset": 3393,
-// JSON-NEXT: "col": 29,
-// JSON-NEXT: "tokLen": 1
-// JSON-NEXT: },
-// JSON-NEXT: "range": {
-// JSON-NEXT: "begin": {
-// JSON-NEXT: "offset": 3388,
-// JSON-NEXT: "col": 24,
-// JSON-NEXT: "tokLen": 4
-// JSON-NEXT: },
-// JSON-NEXT: "end": {
-// JSON-NEXT: "offset": 3398,
-// JSON-NEXT: "col": 34,
-// JSON-NEXT: "tokLen": 1
-// JSON-NEXT: }
-// JSON-NEXT: },
-// JSON-NEXT: "isUsed": true,
-// JSON-NEXT: "name": "f",
-// JSON-NEXT: "mangledName": "_ZN5test51fILj0EEEvv",
-// JSON-NEXT: "type": {
-// JSON-NEXT: "qualType": "void ()"
-// JSON-NEXT: },
-// JSON-NEXT: "inner": [
-// JSON-NEXT: {
-// JSON-NEXT: "kind": "TemplateArgument",
-// JSON-NEXT: "value": 0
-// JSON-NEXT: },
-// JSON-NEXT: {
-// JSON-NEXT: "id": "0x{{.*}}",
-// JSON-NEXT: "kind": "CompoundStmt",
-// JSON-NEXT: "range": {
-// JSON-NEXT: "begin": {
-// JSON-NEXT: "offset": 3397,
-// JSON-NEXT: "col": 33,
-// JSON-NEXT: "tokLen": 1
-// JSON-NEXT: },
-// JSON-NEXT: "end": {
-// JSON-NEXT: "offset": 3398,
-// JSON-NEXT: "col": 34,
-// JSON-NEXT: "tokLen": 1
-// JSON-NEXT: }
-// JSON-NEXT: }
-// JSON-NEXT: }
-// JSON-NEXT: ]
-// JSON-NEXT: }
-// JSON-NEXT: ]
-// JSON-NEXT: },
-// JSON-NEXT: {
-// JSON-NEXT: "id": "0x{{.*}}",
-// JSON-NEXT: "kind": "VarDecl",
-// JSON-NEXT: "loc": {
-// JSON-NEXT: "offset": 3407,
-// JSON-NEXT: "line": 109,
-// JSON-NEXT: "col": 8,
-// JSON-NEXT: "tokLen": 1
-// JSON-NEXT: },
-// JSON-NEXT: "range": {
-// JSON-NEXT: "begin": {
-// JSON-NEXT: "offset": 3400,
-// JSON-NEXT: "col": 1,
-// JSON-NEXT: "tokLen": 4
-// JSON-NEXT: },
-// JSON-NEXT: "end": {
-// JSON-NEXT: "offset": 3416,
-// JSON-NEXT: "col": 17,
-// JSON-NEXT: "tokLen": 1
-// JSON-NEXT: }
-// JSON-NEXT: },
-// JSON-NEXT: "name": "q",
-// JSON-NEXT: "mangledName": "_ZN5test51qE",
-// JSON-NEXT: "type": {
-// JSON-NEXT: "qualType": "void (*)()"
-// JSON-NEXT: },
-// JSON-NEXT: "init": "c",
-// JSON-NEXT: "inner": [
-// JSON-NEXT: {
-// JSON-NEXT: "id": "0x{{.*}}",
-// JSON-NEXT: "kind": "ImplicitCastExpr",
-// JSON-NEXT: "range": {
-// JSON-NEXT: "begin": {
-// JSON-NEXT: "offset": 3414,
-// JSON-NEXT: "col": 15,
-// JSON-NEXT: "tokLen": 1
-// JSON-NEXT: },
-// JSON-NEXT: "end": {
-// JSON-NEXT: "offset": 3416,
-// JSON-NEXT: "col": 17,
-// JSON-NEXT: "tokLen": 1
-// JSON-NEXT: }
-// JSON-NEXT: },
-// JSON-NEXT: "type": {
-// JSON-NEXT: "qualType": "void (*)()"
-// JSON-NEXT: },
-// JSON-NEXT: "valueCategory": "prvalue",
-// JSON-NEXT: "castKind": "FunctionToPointerDecay",
-// JSON-NEXT: "inner": [
-// JSON-NEXT: {
-// JSON-NEXT: "id": "0x{{.*}}",
-// JSON-NEXT: "kind": "DeclRefExpr",
-// JSON-NEXT: "range": {
-// JSON-NEXT: "begin": {
-// JSON-NEXT: "offset": 3414,
-// JSON-NEXT: "col": 15,
-// JSON-NEXT: "tokLen": 1
-// JSON-NEXT: },
-// JSON-NEXT: "end": {
-// JSON-NEXT: "offset": 3416,
-// JSON-NEXT: "col": 17,
-// JSON-NEXT: "tokLen": 1
-// JSON-NEXT: }
-// JSON-NEXT: },
-// JSON-NEXT: "type": {
-// JSON-NEXT: "qualType": "void ()"
-// JSON-NEXT: },
-// JSON-NEXT: "valueCategory": "lvalue",
-// JSON-NEXT: "referencedDecl": {
-// JSON-NEXT: "id": "0x{{.*}}",
-// JSON-NEXT: "kind": "FunctionDecl",
-// JSON-NEXT: "name": "f",
-// JSON-NEXT: "type": {
-// JSON-NEXT: "qualType": "void ()"
-// JSON-NEXT: }
-// JSON-NEXT: },
-// JSON-NEXT: "foundReferencedDecl": {
-// JSON-NEXT: "id": "0x{{.*}}",
-// JSON-NEXT: "kind": "FunctionTemplateDecl",
-// JSON-NEXT: "name": "f"
-// JSON-NEXT: }
-// JSON-NEXT: }
-// JSON-NEXT: ]
-// JSON-NEXT: }
-// JSON-NEXT: ]
-// JSON-NEXT: }
-// JSON-NEXT: ]
-// JSON-NEXT: },
-// JSON-NEXT: {
-// JSON-NEXT: "id": "0x{{.*}}",
-// JSON-NEXT: "kind": "NamespaceDecl",
-// JSON-NEXT: "loc": {
-// JSON-NEXT: "offset": 3645,
-// JSON-NEXT: "line": 116,
-// JSON-NEXT: "col": 11,
-// JSON-NEXT: "tokLen": 5
-// JSON-NEXT: },
-// JSON-NEXT: "range": {
-// JSON-NEXT: "begin": {
-// JSON-NEXT: "offset": 3635,
-// JSON-NEXT: "col": 1,
-// JSON-NEXT: "tokLen": 9
-// JSON-NEXT: },
-// JSON-NEXT: "end": {
-// JSON-NEXT: "offset": 4000,
-// JSON-NEXT: "line": 128,
-// JSON-NEXT: "col": 1,
-// JSON-NEXT: "tokLen": 1
-// JSON-NEXT: }
-// JSON-NEXT: },
-// JSON-NEXT: "name": "test6",
-// JSON-NEXT: "inner": [
-// JSON-NEXT: {
-// JSON-NEXT: "id": "0x{{.*}}",
-// JSON-NEXT: "kind": "VarTemplateDecl",
-// JSON-NEXT: "loc": {
-// JSON-NEXT: "offset": 3687,
-// JSON-NEXT: "line": 118,
-// JSON-NEXT: "col": 16,
-// JSON-NEXT: "tokLen": 1
-// JSON-NEXT: },
-// JSON-NEXT: "range": {
-// JSON-NEXT: "begin": {
-// JSON-NEXT: "offset": 3653,
-// JSON-NEXT: "line": 117,
-// JSON-NEXT: "col": 1,
-// JSON-NEXT: "tokLen": 8
-// JSON-NEXT: },
-// JSON-NEXT: "end": {
-// JSON-NEXT: "offset": 3691,
-// JSON-NEXT: "line": 118,
-// JSON-NEXT: "col": 20,
-// JSON-NEXT: "tokLen": 4
-// JSON-NEXT: }
-// JSON-NEXT: },
-// JSON-NEXT: "name": "C",
-// JSON-NEXT: "inner": [
-// JSON-NEXT: {
-// JSON-NEXT: "id": "0x{{.*}}",
-// JSON-NEXT: "kind": "TemplateTypeParmDecl",
-// JSON-NEXT: "loc": {
-// JSON-NEXT: "offset": 3669,
-// JSON-NEXT: "line": 117,
-// JSON-NEXT: "col": 17,
-// JSON-NEXT: "tokLen": 1
-// JSON-NEXT: },
-// JSON-NEXT: "range": {
-// JSON-NEXT: "begin": {
-// JSON-NEXT: "offset": 3663,
-// JSON-NEXT: "col": 11,
-// JSON-NEXT: "tokLen": 5
-// JSON-NEXT: },
-// JSON-NEXT: "end": {
-// JSON-NEXT: "offset": 3669,
-// JSON-NEXT: "col": 17,
-// JSON-NEXT: "tokLen": 1
-// JSON-NEXT: }
-// JSON-NEXT: },
-// JSON-NEXT: "name": "D",
-// JSON-NEXT: "tagUsed": "class",
-// JSON-NEXT: "depth": 0,
-// JSON-NEXT: "index": 0
-// JSON-NEXT: },
-// JSON-NEXT: {
-// JSON-NEXT: "id": "0x{{.*}}",
-// JSON-NEXT: "kind": "VarDecl",
-// JSON-NEXT: "loc": {
-// JSON-NEXT: "offset": 3687,
-// JSON-NEXT: "line": 118,
-// JSON-NEXT: "col": 16,
-// JSON-NEXT: "tokLen": 1
-// JSON-NEXT: },
-// JSON-NEXT: "range": {
-// JSON-NEXT: "begin": {
-// JSON-NEXT: "offset": 3672,
-// JSON-NEXT: "col": 1,
-// JSON-NEXT: "tokLen": 9
-// JSON-NEXT: },
-// JSON-NEXT: "end": {
-// JSON-NEXT: "offset": 3691,
-// JSON-NEXT: "col": 20,
-// JSON-NEXT: "tokLen": 4
-// JSON-NEXT: }
-// JSON-NEXT: },
-// JSON-NEXT: "name": "C",
-// JSON-NEXT: "type": {
-// JSON-NEXT: "qualType": "const bool"
-// JSON-NEXT: },
-// JSON-NEXT: "constexpr": true,
-// JSON-NEXT: "init": "c",
-// JSON-NEXT: "inner": [
-// JSON-NEXT: {
-// JSON-NEXT: "id": "0x{{.*}}",
-// JSON-NEXT: "kind": "CXXBoolLiteralExpr",
-// JSON-NEXT: "range": {
-// JSON-NEXT: "begin": {
-// JSON-NEXT: "offset": 3691,
-// JSON-NEXT: "col": 20,
-// JSON-NEXT: "tokLen": 4
-// JSON-NEXT: },
-// JSON-NEXT: "end": {
-// JSON-NEXT: "offset": 3691,
-// JSON-NEXT: "col": 20,
-// JSON-NEXT: "tokLen": 4
-// JSON-NEXT: }
-// JSON-NEXT: },
-// JSON-NEXT: "type": {
-// JSON-NEXT: "qualType": "bool"
-// JSON-NEXT: },
-// JSON-NEXT: "valueCategory": "prvalue",
-// JSON-NEXT: "value": true
-// JSON-NEXT: }
-// JSON-NEXT: ]
-// JSON-NEXT: }
-// JSON-NEXT: ]
-// JSON-NEXT: },
-// JSON-NEXT: {
-// JSON-NEXT: "id": "0x{{.*}}",
-// JSON-NEXT: "kind": "FunctionTemplateDecl",
-// JSON-NEXT: "loc": {
-// JSON-NEXT: "offset": 3724,
-// JSON-NEXT: "line": 121,
-// JSON-NEXT: "col": 6,
-// JSON-NEXT: "tokLen": 4
-// JSON-NEXT: },
-// JSON-NEXT: "range": {
-// JSON-NEXT: "begin": {
-// JSON-NEXT: "offset": 3698,
-// JSON-NEXT: "line": 120,
-// JSON-NEXT: "col": 1,
-// JSON-NEXT: "tokLen": 8
-// JSON-NEXT: },
-// JSON-NEXT: "end": {
-// JSON-NEXT: "offset": 3998,
-// JSON-NEXT: "line": 127,
-// JSON-NEXT: "col": 1,
-// JSON-NEXT: "tokLen": 1
-// JSON-NEXT: }
-// JSON-NEXT: },
-// JSON-NEXT: "name": "func",
-// JSON-NEXT: "inner": [
-// JSON-NEXT: {
-// JSON-NEXT: "id": "0x{{.*}}",
-// JSON-NEXT: "kind": "TemplateTypeParmDecl",
-// JSON-NEXT: "loc": {
-// JSON-NEXT: "offset": 3714,
-// JSON-NEXT: "line": 120,
-// JSON-NEXT: "col": 17,
-// JSON-NEXT: "tokLen": 3
-// JSON-NEXT: },
-// JSON-NEXT: "range": {
-// JSON-NEXT: "begin": {
-// JSON-NEXT: "offset": 3708,
-// JSON-NEXT: "col": 11,
-// JSON-NEXT: "tokLen": 5
-// JSON-NEXT: },
-// JSON-NEXT: "end": {
-// JSON-NEXT: "offset": 3714,
-// JSON-NEXT: "col": 17,
-// JSON-NEXT: "tokLen": 3
-// JSON-NEXT: }
-// JSON-NEXT: },
-// JSON-NEXT: "isReferenced": true,
-// JSON-NEXT: "name": "Key",
-// JSON-NEXT: "tagUsed": "class",
-// JSON-NEXT: "depth": 0,
-// JSON-NEXT: "index": 0
-// JSON-NEXT: },
-// JSON-NEXT: {
-// JSON-NEXT: "id": "0x{{.*}}",
-// JSON-NEXT: "kind": "FunctionDecl",
-// JSON-NEXT: "loc": {
-// JSON-NEXT: "offset": 3724,
-// JSON-NEXT: "line": 121,
-// JSON-NEXT: "col": 6,
-// JSON-NEXT: "tokLen": 4
-// JSON-NEXT: },
-// JSON-NEXT: "range": {
-// JSON-NEXT: "begin": {
-// JSON-NEXT: "offset": 3719,
-// JSON-NEXT: "col": 1,
-// JSON-NEXT: "tokLen": 4
-// JSON-NEXT: },
-// JSON-NEXT: "end": {
-// JSON-NEXT: "offset": 3998,
-// JSON-NEXT: "line": 127,
-// JSON-NEXT: "col": 1,
-// JSON-NEXT: "tokLen": 1
-// JSON-NEXT: }
-// JSON-NEXT: },
-// JSON-NEXT: "name": "func",
-// JSON-NEXT: "type": {
-// JSON-NEXT: "qualType": "void ()"
-// JSON-NEXT: },
-// JSON-NEXT: "inner": [
-// JSON-NEXT: {
-// JSON-NEXT: "id": "0x{{.*}}",
-// JSON-NEXT: "kind": "CompoundStmt",
-// JSON-NEXT: "range": {
-// JSON-NEXT: "begin": {
-// JSON-NEXT: "offset": 3731,
-// JSON-NEXT: "line": 121,
-// JSON-NEXT: "col": 13,
-// JSON-NEXT: "tokLen": 1
-// JSON-NEXT: },
-// JSON-NEXT: "end": {
-// JSON-NEXT: "offset": 3998,
-// JSON-NEXT: "line": 127,
-// JSON-NEXT: "col": 1,
-// JSON-NEXT: "tokLen": 1
-// JSON-NEXT: }
-// JSON-NEXT: },
-// JSON-NEXT: "inner": [
-// JSON-NEXT: {
-// JSON-NEXT: "id": "0x{{.*}}",
-// JSON-NEXT: "kind": "UnresolvedLookupExpr",
-// JSON-NEXT: "range": {
-// JSON-NEXT: "begin": {
-// JSON-NEXT: "offset": 3735,
-// JSON-NEXT: "line": 122,
-// JSON-NEXT: "col": 3,
-// JSON-NEXT: "tokLen": 1
-// JSON-NEXT: },
-// JSON-NEXT: "end": {
-// JSON-NEXT: "offset": 3740,
-// JSON-NEXT: "col": 8,
-// JSON-NEXT: "tokLen": 1
-// JSON-NEXT: }
-// JSON-NEXT: },
-// JSON-NEXT: "type": {
-// JSON-NEXT: "qualType": "<dependent type>"
-// JSON-NEXT: },
-// JSON-NEXT: "valueCategory": "lvalue",
-// JSON-NEXT: "usesADL": false,
-// JSON-NEXT: "name": "C",
-// JSON-NEXT: "lookups": [
-// JSON-NEXT: {
-// JSON-NEXT: "id": "0x{{.*}}",
-// JSON-NEXT: "kind": "VarTemplateDecl",
-// JSON-NEXT: "name": "C"
-// JSON-NEXT: }
-// JSON-NEXT: ],
-// JSON-NEXT: "inner": [
-// JSON-NEXT: {
-// JSON-NEXT: "kind": "TemplateArgument",
-// JSON-NEXT: "type": {
-// JSON-NEXT: "qualType": "Key"
-// JSON-NEXT: },
-// JSON-NEXT: "inner": [
-// JSON-NEXT: {
-// JSON-NEXT: "id": "0x{{.*}}",
-// JSON-NEXT: "kind": "TemplateTypeParmType",
-// JSON-NEXT: "type": {
-// JSON-NEXT: "qualType": "Key"
-// JSON-NEXT: },
-// JSON-NEXT: "isDependent": true,
-// JSON-NEXT: "isInstantiationDependent": true,
-// JSON-NEXT: "depth": 0,
-// JSON-NEXT: "index": 0,
-// JSON-NEXT: "decl": {
-// JSON-NEXT: "id": "0x{{.*}}",
-// JSON-NEXT: "kind": "TemplateTypeParmDecl",
-// JSON-NEXT: "name": "Key"
-// JSON-NEXT: }
-// JSON-NEXT: }
-// JSON-NEXT: ]
-// JSON-NEXT: }
-// JSON-NEXT: ]
-// JSON-NEXT: }
-// JSON-NEXT: ]
-// JSON-NEXT: }
-// JSON-NEXT: ]
-// JSON-NEXT: }
-// JSON-NEXT: ]
-// JSON-NEXT: }
-// JSON-NEXT: ]
-// JSON-NEXT: },
-// JSON-NEXT: {
-// JSON-NEXT: "id": "0x{{.*}}",
-// JSON-NEXT: "kind": "NamespaceDecl",
-// JSON-NEXT: "loc": {
-// JSON-NEXT: "offset": 4013,
-// JSON-NEXT: "line": 130,
-// JSON-NEXT: "col": 11,
-// JSON-NEXT: "tokLen": 5
-// JSON-NEXT: },
-// JSON-NEXT: "range": {
-// JSON-NEXT: "begin": {
-// JSON-NEXT: "offset": 4003,
-// JSON-NEXT: "col": 1,
-// JSON-NEXT: "tokLen": 9
-// JSON-NEXT: },
-// JSON-NEXT: "end": {
-// JSON-NEXT: "offset": 4308,
-// JSON-NEXT: "line": 136,
-// JSON-NEXT: "col": 1,
-// JSON-NEXT: "tokLen": 1
-// JSON-NEXT: }
-// JSON-NEXT: },
-// JSON-NEXT: "name": "test7",
-// JSON-NEXT: "inner": [
-// JSON-NEXT: {
-// JSON-NEXT: "id": "0x{{.*}}",
-// JSON-NEXT: "kind": "ClassTemplateDecl",
-// JSON-NEXT: "loc": {
-// JSON-NEXT: "offset": 4066,
-// JSON-NEXT: "line": 131,
-// JSON-NEXT: "col": 46,
-// JSON-NEXT: "tokLen": 1
-// JSON-NEXT: },
-// JSON-NEXT: "range": {
-// JSON-NEXT: "begin": {
-// JSON-NEXT: "offset": 4023,
-// JSON-NEXT: "col": 3,
-// JSON-NEXT: "tokLen": 8
-// JSON-NEXT: },
-// JSON-NEXT: "end": {
-// JSON-NEXT: "offset": 4069,
-// JSON-NEXT: "col": 49,
-// JSON-NEXT: "tokLen": 1
-// JSON-NEXT: }
-// JSON-NEXT: },
-// JSON-NEXT: "name": "A",
-// JSON-NEXT: "inner": [
-// JSON-NEXT: {
-// JSON-NEXT: "id": "0x{{.*}}",
-// JSON-NEXT: "kind": "TemplateTemplateParmDecl",
-// JSON-NEXT: "loc": {
-// JSON-NEXT: "offset": 4055,
-// JSON-NEXT: "col": 35,
-// JSON-NEXT: "tokLen": 2
-// JSON-NEXT: },
-// JSON-NEXT: "range": {
-// JSON-NEXT: "begin": {
-// JSON-NEXT: "offset": 4033,
-// JSON-NEXT: "col": 13,
-// JSON-NEXT: "tokLen": 8
-// JSON-NEXT: },
-// JSON-NEXT: "end": {
-// JSON-NEXT: "offset": 4055,
-// JSON-NEXT: "col": 35,
-// JSON-NEXT: "tokLen": 2
-// JSON-NEXT: }
-// JSON-NEXT: },
-// JSON-NEXT: "name": "TT",
-// JSON-NEXT: "depth": 0,
-// JSON-NEXT: "index": 0,
-// JSON-NEXT: "inner": [
-// JSON-NEXT: {
-// JSON-NEXT: "id": "0x{{.*}}",
-// JSON-NEXT: "kind": "TemplateTypeParmDecl",
-// JSON-NEXT: "loc": {
-// JSON-NEXT: "offset": 4047,
-// JSON-NEXT: "col": 27,
-// JSON-NEXT: "tokLen": 1
-// JSON-NEXT: },
-// JSON-NEXT: "range": {
-// JSON-NEXT: "begin": {
-// JSON-NEXT: "offset": 4042,
-// JSON-NEXT: "col": 22,
-// JSON-NEXT: "tokLen": 5
-// JSON-NEXT: },
-// JSON-NEXT: "end": {
-// JSON-NEXT: "offset": 4042,
-// JSON-NEXT: "col": 22,
-// JSON-NEXT: "tokLen": 5
-// JSON-NEXT: }
-// JSON-NEXT: },
-// JSON-NEXT: "tagUsed": "class",
-// JSON-NEXT: "depth": 1,
-// JSON-NEXT: "index": 0
-// JSON-NEXT: }
-// JSON-NEXT: ]
-// JSON-NEXT: },
-// JSON-NEXT: {
-// JSON-NEXT: "id": "0x{{.*}}",
-// JSON-NEXT: "kind": "CXXRecordDecl",
-// JSON-NEXT: "loc": {
-// JSON-NEXT: "offset": 4066,
-// JSON-NEXT: "col": 46,
-// JSON-NEXT: "tokLen": 1
-// JSON-NEXT: },
-// JSON-NEXT: "range": {
-// JSON-NEXT: "begin": {
-// JSON-NEXT: "offset": 4059,
-// JSON-NEXT: "col": 39,
-// JSON-NEXT: "tokLen": 6
-// JSON-NEXT: },
-// JSON-NEXT: "end": {
-// JSON-NEXT: "offset": 4069,
-// JSON-NEXT: "col": 49,
-// JSON-NEXT: "tokLen": 1
-// JSON-NEXT: }
-// JSON-NEXT: },
-// JSON-NEXT: "name": "A",
-// JSON-NEXT: "tagUsed": "struct",
-// JSON-NEXT: "completeDefinition": true,
-// JSON-NEXT: "definitionData": {
-// JSON-NEXT: "canConstDefaultInit": true,
-// JSON-NEXT: "copyAssign": {
-// JSON-NEXT: "hasConstParam": true,
-// JSON-NEXT: "implicitHasConstParam": true,
-// JSON-NEXT: "needsImplicit": true,
-// JSON-NEXT: "simple": true,
-// JSON-NEXT: "trivial": true
-// JSON-NEXT: },
-// JSON-NEXT: "copyCtor": {
-// JSON-NEXT: "hasConstParam": true,
-// JSON-NEXT: "implicitHasConstParam": true,
-// JSON-NEXT: "needsImplicit": true,
-// JSON-NEXT: "simple": true,
-// JSON-NEXT: "trivial": true
-// JSON-NEXT: },
-// JSON-NEXT: "defaultCtor": {
-// JSON-NEXT: "defaultedIsConstexpr": true,
-// JSON-NEXT: "exists": true,
-// JSON-NEXT: "isConstexpr": true,
-// JSON-NEXT: "needsImplicit": true,
-// JSON-NEXT: "trivial": true
-// JSON-NEXT: },
-// JSON-NEXT: "dtor": {
-// JSON-NEXT: "irrelevant": true,
-// JSON-NEXT: "needsImplicit": true,
-// JSON-NEXT: "simple": true,
-// JSON-NEXT: "trivial": true
-// JSON-NEXT: },
-// JSON-NEXT: "hasConstexprNonCopyMoveConstructor": true,
-// JSON-NEXT: "isAggregate": true,
-// JSON-NEXT: "isEmpty": true,
-// JSON-NEXT: "isLiteral": true,
-// JSON-NEXT: "isPOD": true,
-// JSON-NEXT: "isStandardLayout": true,
-// JSON-NEXT: "isTrivial": true,
-// JSON-NEXT: "isTriviallyCopyable": true,
-// JSON-NEXT: "moveAssign": {
-// JSON-NEXT: "exists": true,
-// JSON-NEXT: "needsImplicit": true,
-// JSON-NEXT: "simple": true,
-// JSON-NEXT: "trivial": true
-// JSON-NEXT: },
-// JSON-NEXT: "moveCtor": {
-// JSON-NEXT: "exists": true,
-// JSON-NEXT: "needsImplicit": true,
-// JSON-NEXT: "simple": true,
-// JSON-NEXT: "trivial": true
-// JSON-NEXT: }
-// JSON-NEXT: },
-// JSON-NEXT: "inner": [
-// JSON-NEXT: {
-// JSON-NEXT: "id": "0x{{.*}}",
-// JSON-NEXT: "kind": "CXXRecordDecl",
-// JSON-NEXT: "loc": {
-// JSON-NEXT: "offset": 4066,
-// JSON-NEXT: "col": 46,
-// JSON-NEXT: "tokLen": 1
-// JSON-NEXT: },
-// JSON-NEXT: "range": {
-// JSON-NEXT: "begin": {
-// JSON-NEXT: "offset": 4059,
-// JSON-NEXT: "col": 39,
-// JSON-NEXT: "tokLen": 6
-// JSON-NEXT: },
-// JSON-NEXT: "end": {
-// JSON-NEXT: "offset": 4066,
-// JSON-NEXT: "col": 46,
-// JSON-NEXT: "tokLen": 1
-// JSON-NEXT: }
-// JSON-NEXT: },
-// JSON-NEXT: "isImplicit": true,
-// JSON-NEXT: "name": "A",
-// JSON-NEXT: "tagUsed": "struct"
-// JSON-NEXT: }
-// JSON-NEXT: ]
-// JSON-NEXT: },
-// JSON-NEXT: {
-// JSON-NEXT: "id": "0x{{.*}}",
-// JSON-NEXT: "kind": "ClassTemplateSpecializationDecl",
-// JSON-NEXT: "name": "A"
-// JSON-NEXT: }
-// JSON-NEXT: ]
-// JSON-NEXT: },
-// JSON-NEXT: {
-// JSON-NEXT: "id": "0x{{.*}}",
-// JSON-NEXT: "kind": "ClassTemplateDecl",
-// JSON-NEXT: "loc": {
-// JSON-NEXT: "offset": 4100,
-// JSON-NEXT: "line": 132,
-// JSON-NEXT: "col": 29,
-// JSON-NEXT: "tokLen": 1
-// JSON-NEXT: },
-// JSON-NEXT: "range": {
-// JSON-NEXT: "begin": {
-// JSON-NEXT: "offset": 4074,
-// JSON-NEXT: "col": 3,
-// JSON-NEXT: "tokLen": 8
-// JSON-NEXT: },
-// JSON-NEXT: "end": {
-// JSON-NEXT: "offset": 4103,
-// JSON-NEXT: "col": 32,
-// JSON-NEXT: "tokLen": 1
-// JSON-NEXT: }
-// JSON-NEXT: },
-// JSON-NEXT: "name": "B",
-// JSON-NEXT: "inner": [
-// JSON-NEXT: {
-// JSON-NEXT: "id": "0x{{.*}}",
-// JSON-NEXT: "kind": "TemplateTypeParmDecl",
-// JSON-NEXT: "loc": {
-// JSON-NEXT: "offset": 4092,
-// JSON-NEXT: "col": 21,
-// JSON-NEXT: "tokLen": 1
-// JSON-NEXT: },
-// JSON-NEXT: "range": {
-// JSON-NEXT: "begin": {
-// JSON-NEXT: "offset": 4084,
-// JSON-NEXT: "col": 13,
-// JSON-NEXT: "tokLen": 5
-// JSON-NEXT: },
-// JSON-NEXT: "end": {
-// JSON-NEXT: "offset": 4084,
-// JSON-NEXT: "col": 13,
-// JSON-NEXT: "tokLen": 5
-// JSON-NEXT: }
-// JSON-NEXT: },
-// JSON-NEXT: "tagUsed": "class",
-// JSON-NEXT: "depth": 0,
-// JSON-NEXT: "index": 0,
-// JSON-NEXT: "isParameterPack": true
-// JSON-NEXT: },
-// JSON-NEXT: {
-// JSON-NEXT: "id": "0x{{.*}}",
-// JSON-NEXT: "kind": "CXXRecordDecl",
-// JSON-NEXT: "loc": {
-// JSON-NEXT: "offset": 4100,
-// JSON-NEXT: "col": 29,
-// JSON-NEXT: "tokLen": 1
-// JSON-NEXT: },
-// JSON-NEXT: "range": {
-// JSON-NEXT: "begin": {
-// JSON-NEXT: "offset": 4094,
-// JSON-NEXT: "col": 23,
-// JSON-NEXT: "tokLen": 5
-// JSON-NEXT: },
-// JSON-NEXT: "end": {
-// JSON-NEXT: "offset": 4103,
-// JSON-NEXT: "col": 32,
-// JSON-NEXT: "tokLen": 1
-// JSON-NEXT: }
-// JSON-NEXT: },
-// JSON-NEXT: "name": "B",
-// JSON-NEXT: "tagUsed": "class",
-// JSON-NEXT: "completeDefinition": true,
-// JSON-NEXT: "definitionData": {
-// JSON-NEXT: "canConstDefaultInit": true,
-// JSON-NEXT: "copyAssign": {
-// JSON-NEXT: "hasConstParam": true,
-// JSON-NEXT: "implicitHasConstParam": true,
-// JSON-NEXT: "needsImplicit": true,
-// JSON-NEXT: "simple": true,
-// JSON-NEXT: "trivial": true
-// JSON-NEXT: },
-// JSON-NEXT: "copyCtor": {
-// JSON-NEXT: "hasConstParam": true,
-// JSON-NEXT: "implicitHasConstParam": true,
-// JSON-NEXT: "needsImplicit": true,
-// JSON-NEXT: "simple": true,
-// JSON-NEXT: "trivial": true
-// JSON-NEXT: },
-// JSON-NEXT: "defaultCtor": {
-// JSON-NEXT: "defaultedIsConstexpr": true,
-// JSON-NEXT: "exists": true,
-// JSON-NEXT: "isConstexpr": true,
-// JSON-NEXT: "needsImplicit": true,
-// JSON-NEXT: "trivial": true
-// JSON-NEXT: },
-// JSON-NEXT: "dtor": {
-// JSON-NEXT: "irrelevant": true,
-// JSON-NEXT: "needsImplicit": true,
-// JSON-NEXT: "simple": true,
-// JSON-NEXT: "trivial": true
-// JSON-NEXT: },
-// JSON-NEXT: "hasConstexprNonCopyMoveConstructor": true,
-// JSON-NEXT: "isAggregate": true,
-// JSON-NEXT: "isEmpty": true,
-// JSON-NEXT: "isLiteral": true,
-// JSON-NEXT: "isPOD": true,
-// JSON-NEXT: "isStandardLayout": true,
-// JSON-NEXT: "isTrivial": true,
-// JSON-NEXT: "isTriviallyCopyable": true,
-// JSON-NEXT: "moveAssign": {
-// JSON-NEXT: "exists": true,
-// JSON-NEXT: "needsImplicit": true,
-// JSON-NEXT: "simple": true,
-// JSON-NEXT: "trivial": true
-// JSON-NEXT: },
-// JSON-NEXT: "moveCtor": {
-// JSON-NEXT: "exists": true,
-// JSON-NEXT: "needsImplicit": true,
-// JSON-NEXT: "simple": true,
-// JSON-NEXT: "trivial": true
-// JSON-NEXT: }
-// JSON-NEXT: },
-// JSON-NEXT: "inner": [
-// JSON-NEXT: {
-// JSON-NEXT: "id": "0x{{.*}}",
-// JSON-NEXT: "kind": "CXXRecordDecl",
-// JSON-NEXT: "loc": {
-// JSON-NEXT: "offset": 4100,
-// JSON-NEXT: "col": 29,
-// JSON-NEXT: "tokLen": 1
-// JSON-NEXT: },
-// JSON-NEXT: "range": {
-// JSON-NEXT: "begin": {
-// JSON-NEXT: "offset": 4094,
-// JSON-NEXT: "col": 23,
-// JSON-NEXT: "tokLen": 5
-// JSON-NEXT: },
-// JSON-NEXT: "end": {
-// JSON-NEXT: "offset": 4100,
-// JSON-NEXT: "col": 29,
-// JSON-NEXT: "tokLen": 1
-// JSON-NEXT: }
-// JSON-NEXT: },
-// JSON-NEXT: "isImplicit": true,
-// JSON-NEXT: "name": "B",
-// JSON-NEXT: "tagUsed": "class"
-// JSON-NEXT: }
-// JSON-NEXT: ]
-// JSON-NEXT: }
-// JSON-NEXT: ]
-// JSON-NEXT: },
-// JSON-NEXT: {
-// JSON-NEXT: "id": "0x{{.*}}",
-// JSON-NEXT: "kind": "ClassTemplateSpecializationDecl",
-// JSON-NEXT: "loc": {
-// JSON-NEXT: "offset": 4124,
-// JSON-NEXT: "line": 133,
-// JSON-NEXT: "col": 19,
-// JSON-NEXT: "tokLen": 1
-// JSON-NEXT: },
-// JSON-NEXT: "range": {
-// JSON-NEXT: "begin": {
-// JSON-NEXT: "offset": 4108,
-// JSON-NEXT: "col": 3,
-// JSON-NEXT: "tokLen": 8
-// JSON-NEXT: },
-// JSON-NEXT: "end": {
-// JSON-NEXT: "offset": 4127,
-// JSON-NEXT: "col": 22,
-// JSON-NEXT: "tokLen": 1
-// JSON-NEXT: }
-// JSON-NEXT: },
-// JSON-NEXT: "name": "A",
-// JSON-NEXT: "tagUsed": "struct",
-// JSON-NEXT: "completeDefinition": true,
-// JSON-NEXT: "strict-pack-match": true,
-// JSON-NEXT: "definitionData": {
-// JSON-NEXT: "canConstDefaultInit": true,
-// JSON-NEXT: "canPassInRegisters": true,
-// JSON-NEXT: "copyAssign": {
-// JSON-NEXT: "hasConstParam": true,
-// JSON-NEXT: "implicitHasConstParam": true,
-// JSON-NEXT: "needsImplicit": true,
-// JSON-NEXT: "simple": true,
-// JSON-NEXT: "trivial": true
-// JSON-NEXT: },
-// JSON-NEXT: "copyCtor": {
-// JSON-NEXT: "hasConstParam": true,
-// JSON-NEXT: "implicitHasConstParam": true,
-// JSON-NEXT: "needsImplicit": true,
-// JSON-NEXT: "simple": true,
-// JSON-NEXT: "trivial": true
-// JSON-NEXT: },
-// JSON-NEXT: "defaultCtor": {
-// JSON-NEXT: "defaultedIsConstexpr": true,
-// JSON-NEXT: "exists": true,
-// JSON-NEXT: "isConstexpr": true,
-// JSON-NEXT: "needsImplicit": true,
-// JSON-NEXT: "trivial": true
-// JSON-NEXT: },
-// JSON-NEXT: "dtor": {
-// JSON-NEXT: "irrelevant": true,
-// JSON-NEXT: "needsImplicit": true,
-// JSON-NEXT: "simple": true,
-// JSON-NEXT: "trivial": true
-// JSON-NEXT: },
-// JSON-NEXT: "hasConstexprNonCopyMoveConstructor": true,
-// JSON-NEXT: "isAggregate": true,
-// JSON-NEXT: "isEmpty": true,
-// JSON-NEXT: "isLiteral": true,
-// JSON-NEXT: "isPOD": true,
-// JSON-NEXT: "isStandardLayout": true,
-// JSON-NEXT: "isTrivial": true,
-// JSON-NEXT: "isTriviallyCopyable": true,
-// JSON-NEXT: "moveAssign": {
-// JSON-NEXT: "exists": true,
-// JSON-NEXT: "needsImplicit": true,
-// JSON-NEXT: "simple": true,
-// JSON-NEXT: "trivial": true
-// JSON-NEXT: },
-// JSON-NEXT: "moveCtor": {
-// JSON-NEXT: "exists": true,
-// JSON-NEXT: "needsImplicit": true,
-// JSON-NEXT: "simple": true,
-// JSON-NEXT: "trivial": true
-// JSON-NEXT: }
-// JSON-NEXT: },
-// JSON-NEXT: "inner": [
-// JSON-NEXT: {
-// JSON-NEXT: "kind": "TemplateArgument"
-// JSON-NEXT: },
-// JSON-NEXT: {
-// JSON-NEXT: "id": "0x{{.*}}",
-// JSON-NEXT: "kind": "CXXRecordDecl",
-// JSON-NEXT: "loc": {
-// JSON-NEXT: "offset": 4066,
-// JSON-NEXT: "line": 131,
-// JSON-NEXT: "col": 46,
-// JSON-NEXT: "tokLen": 1
-// JSON-NEXT: },
-// JSON-NEXT: "range": {
-// JSON-NEXT: "begin": {
-// JSON-NEXT: "offset": 4059,
-// JSON-NEXT: "col": 39,
-// JSON-NEXT: "tokLen": 6
-// JSON-NEXT: },
-// JSON-NEXT: "end": {
-// JSON-NEXT: "offset": 4066,
-// JSON-NEXT: "col": 46,
-// JSON-NEXT: "tokLen": 1
-// JSON-NEXT: }
-// JSON-NEXT: },
-// JSON-NEXT: "isImplicit": true,
-// JSON-NEXT: "name": "A",
-// JSON-NEXT: "tagUsed": "struct"
-// JSON-NEXT: }
-// JSON-NEXT: ]
-// JSON-NEXT: }
-// JSON-NEXT: ]
-// JSON-NEXT: }
-// JSON-NEXT: ]
-// JSON-NEXT: }
diff --git a/clang/test/AST/gen_ast_dump_json_test.py b/clang/test/AST/gen_ast_dump_json_test.py
index 39b8eaadbad324c..301d60e479dbf04 100644
--- a/clang/test/AST/gen_ast_dump_json_test.py
+++ b/clang/test/AST/gen_ast_dump_json_test.py
@@ -83,12 +83,6 @@ def main():
action="store",
default="",
)
- parser.add_argument(
- "--prefix",
- help="The FileCheck prefix",
- action="store",
- default="CHECK",
- )
update_or_generate_group = parser.add_mutually_exclusive_group()
update_or_generate_group.add_argument(
"--update", help="Update the file in-place", action="store_true"
@@ -119,18 +113,11 @@ def main():
cmdline_opts=args.opts,
do_update=args.update,
force_update=args.update_manual,
- prefix=args.prefix,
)
def process_file(
- source_file,
- clang_binary,
- cmdline_filters,
- cmdline_opts,
- do_update,
- force_update,
- prefix,
+ source_file, clang_binary, cmdline_filters, cmdline_opts, do_update, force_update
):
note_firstline = (
"// NOTE: CHECK lines have been autogenerated by " "gen_ast_dump_json_test.py"
@@ -240,14 +227,14 @@ def process_file(
for out_ast in out_asts:
append_str = json.dumps(out_ast, indent=1, ensure_ascii=False)
out_str = "\n\n"
- out_str += f"// {prefix}-NOT: {{{{^}}}}Dumping\n"
+ out_str += "// CHECK-NOT: {{^}}Dumping\n"
index = 0
for append_line in append_str.splitlines()[2:]:
if index == 0:
- out_str += f"// {prefix}: %s\n" % (append_line.rstrip())
+ out_str += "// CHECK: %s\n" % (append_line.rstrip())
index += 1
else:
- out_str += f"// {prefix}-NEXT: %s\n" % (append_line.rstrip())
+ out_str += "// CHECK-NEXT: %s\n" % (append_line.rstrip())
f.write(out_str)
f.flush()
diff --git a/clang/test/SemaTemplate/cwg2398.cpp b/clang/test/SemaTemplate/cwg2398.cpp
index 51d98d4b3b20256..1728f90af287b0c 100644
--- a/clang/test/SemaTemplate/cwg2398.cpp
+++ b/clang/test/SemaTemplate/cwg2398.cpp
@@ -585,23 +585,6 @@ namespace regression2 {
template <typename, int> struct Matrix;
template struct D<Matrix<double, 3>>;
} // namespace regression2
-namespace regression3 {
- struct None {};
- template<class T> struct Node { using type = T; };
-
- template <template<class> class TT, class T>
- struct A {
- static_assert(!__is_same(T, None));
- using type2 = typename A<TT, typename T::type>::type2;
- };
-
- template <template<class> class TT> struct A<TT, None> {
- using type2 = void;
- };
-
- template <class...> class B {};
- template struct A<B, Node<None>>;
-} // namespace regression3
namespace nttp_auto {
namespace t1 {
More information about the llvm-branch-commits
mailing list