brintos

brintos / llvm-project-archived public Read only

0
0
Text · 100.2 KiB · 70f1d3b Raw
3133 lines · cpp
1// RUN: %clang_cc1 -std=c++17 -triple x86_64-unknown-unknown -ast-dump=json %s | FileCheck -strict-whitespace %s2 3template <typename Ty>4void a(Ty);5 6template <typename... Ty>7void b(Ty...);8 9template <class Ty, typename Uy>10void c(Ty);11 12template <>13void c<float, int>(float);14 15template <typename Ty, template<typename> typename Uy>16void d(Ty, Uy<Ty>);17 18template <class Ty>19void e(Ty);20 21template <int N>22void f(int i = N);23 24template <typename Ty = int>25void g(Ty);26 27template <typename = void>28void h();29 30template <typename Ty>31struct R {};32 33template <>34struct R<int> {};35 36template <typename Ty, class Uy>37struct S {};38 39template <typename Ty>40struct S<Ty, int> {};41 42template <auto>43struct T {};44 45template <decltype(auto)>46struct U {};47 48template <typename Ty>49struct V {50  template <typename Uy>51  void f();52};53 54template <typename Ty>55template <typename Uy>56void V<Ty>::f() {}57 58template <template <typename> class = R>59void i();60 61template <int A> class W{62};63W(int)->W<1>;64 65// NOTE: CHECK lines have been autogenerated by gen_ast_dump_json_test.py66 67 68// CHECK-NOT: {{^}}Dumping69// CHECK:  "kind": "TranslationUnitDecl",70// CHECK-NEXT:  "loc": {},71// CHECK-NEXT:  "range": {72// CHECK-NEXT:   "begin": {},73// CHECK-NEXT:   "end": {}74// CHECK-NEXT:  },75// CHECK-NEXT:  "inner": [76// CHECK-NEXT:   {77// CHECK-NEXT:    "id": "0x{{.*}}",78// CHECK-NEXT:    "kind": "TypedefDecl",79// CHECK-NEXT:    "loc": {},80// CHECK-NEXT:    "range": {81// CHECK-NEXT:     "begin": {},82// CHECK-NEXT:     "end": {}83// CHECK-NEXT:    },84// CHECK-NEXT:    "isImplicit": true,85// CHECK-NEXT:    "name": "__int128_t",86// CHECK-NEXT:    "type": {87// CHECK-NEXT:     "qualType": "__int128"88// CHECK-NEXT:    },89// CHECK-NEXT:    "inner": [90// CHECK-NEXT:     {91// CHECK-NEXT:      "id": "0x{{.*}}",92// CHECK-NEXT:      "kind": "BuiltinType",93// CHECK-NEXT:      "type": {94// CHECK-NEXT:       "qualType": "__int128"95// CHECK-NEXT:      }96// CHECK-NEXT:     }97// CHECK-NEXT:    ]98// CHECK-NEXT:   },99// CHECK-NEXT:   {100// CHECK-NEXT:    "id": "0x{{.*}}",101// CHECK-NEXT:    "kind": "TypedefDecl",102// CHECK-NEXT:    "loc": {},103// CHECK-NEXT:    "range": {104// CHECK-NEXT:     "begin": {},105// CHECK-NEXT:     "end": {}106// CHECK-NEXT:    },107// CHECK-NEXT:    "isImplicit": true,108// CHECK-NEXT:    "name": "__uint128_t",109// CHECK-NEXT:    "type": {110// CHECK-NEXT:     "qualType": "unsigned __int128"111// CHECK-NEXT:    },112// CHECK-NEXT:    "inner": [113// CHECK-NEXT:     {114// CHECK-NEXT:      "id": "0x{{.*}}",115// CHECK-NEXT:      "kind": "BuiltinType",116// CHECK-NEXT:      "type": {117// CHECK-NEXT:       "qualType": "unsigned __int128"118// CHECK-NEXT:      }119// CHECK-NEXT:     }120// CHECK-NEXT:    ]121// CHECK-NEXT:   },122// CHECK-NEXT:   {123// CHECK-NEXT:    "id": "0x{{.*}}",124// CHECK-NEXT:    "kind": "TypedefDecl",125// CHECK-NEXT:    "loc": {},126// CHECK-NEXT:    "range": {127// CHECK-NEXT:     "begin": {},128// CHECK-NEXT:     "end": {}129// CHECK-NEXT:    },130// CHECK-NEXT:    "isImplicit": true,131// CHECK-NEXT:    "name": "__NSConstantString",132// CHECK-NEXT:    "type": {133// CHECK-NEXT:     "qualType": "__NSConstantString_tag"134// CHECK-NEXT:    },135// CHECK-NEXT:    "inner": [136// CHECK-NEXT:     {137// CHECK-NEXT:      "id": "0x{{.*}}",138// CHECK-NEXT:      "kind": "RecordType",139// CHECK-NEXT:      "type": {140// CHECK-NEXT:       "qualType": "__NSConstantString_tag"141// CHECK-NEXT:      },142// CHECK-NEXT:      "decl": {143// CHECK-NEXT:       "id": "0x{{.*}}",144// CHECK-NEXT:       "kind": "CXXRecordDecl",145// CHECK-NEXT:       "name": "__NSConstantString_tag"146// CHECK-NEXT:      }147// CHECK-NEXT:     }148// CHECK-NEXT:    ]149// CHECK-NEXT:   },150// CHECK-NEXT:   {151// CHECK-NEXT:    "id": "0x{{.*}}",152// CHECK-NEXT:    "kind": "TypedefDecl",153// CHECK-NEXT:    "loc": {},154// CHECK-NEXT:    "range": {155// CHECK-NEXT:     "begin": {},156// CHECK-NEXT:     "end": {}157// CHECK-NEXT:    },158// CHECK-NEXT:    "isImplicit": true,159// CHECK-NEXT:    "name": "__builtin_ms_va_list",160// CHECK-NEXT:    "type": {161// CHECK-NEXT:     "qualType": "char *"162// CHECK-NEXT:    },163// CHECK-NEXT:    "inner": [164// CHECK-NEXT:     {165// CHECK-NEXT:      "id": "0x{{.*}}",166// CHECK-NEXT:      "kind": "PointerType",167// CHECK-NEXT:      "type": {168// CHECK-NEXT:       "qualType": "char *"169// CHECK-NEXT:      },170// CHECK-NEXT:      "inner": [171// CHECK-NEXT:       {172// CHECK-NEXT:        "id": "0x{{.*}}",173// CHECK-NEXT:        "kind": "BuiltinType",174// CHECK-NEXT:        "type": {175// CHECK-NEXT:         "qualType": "char"176// CHECK-NEXT:        }177// CHECK-NEXT:       }178// CHECK-NEXT:      ]179// CHECK-NEXT:     }180// CHECK-NEXT:    ]181// CHECK-NEXT:   },182// CHECK-NEXT:   {183// CHECK-NEXT:    "id": "0x{{.*}}",184// CHECK-NEXT:    "kind": "TypedefDecl",185// CHECK-NEXT:    "loc": {},186// CHECK-NEXT:    "range": {187// CHECK-NEXT:     "begin": {},188// CHECK-NEXT:     "end": {}189// CHECK-NEXT:    },190// CHECK-NEXT:    "isImplicit": true,191// CHECK-NEXT:    "name": "__builtin_va_list",192// CHECK-NEXT:    "type": {193// CHECK-NEXT:     "qualType": "__va_list_tag[1]"194// CHECK-NEXT:    },195// CHECK-NEXT:    "inner": [196// CHECK-NEXT:     {197// CHECK-NEXT:      "id": "0x{{.*}}",198// CHECK-NEXT:      "kind": "ConstantArrayType",199// CHECK-NEXT:      "type": {200// CHECK-NEXT:       "qualType": "__va_list_tag[1]"201// CHECK-NEXT:      },202// CHECK-NEXT:      "size": 1,203// CHECK-NEXT:      "inner": [204// CHECK-NEXT:       {205// CHECK-NEXT:        "id": "0x{{.*}}",206// CHECK-NEXT:        "kind": "RecordType",207// CHECK-NEXT:        "type": {208// CHECK-NEXT:         "qualType": "__va_list_tag"209// CHECK-NEXT:        },210// CHECK-NEXT:        "decl": {211// CHECK-NEXT:         "id": "0x{{.*}}",212// CHECK-NEXT:         "kind": "CXXRecordDecl",213// CHECK-NEXT:         "name": "__va_list_tag"214// CHECK-NEXT:        }215// CHECK-NEXT:       }216// CHECK-NEXT:      ]217// CHECK-NEXT:     }218// CHECK-NEXT:    ]219// CHECK-NEXT:   },220// CHECK-NEXT:   {221// CHECK-NEXT:    "id": "0x{{.*}}",222// CHECK-NEXT:    "kind": "FunctionTemplateDecl",223// CHECK-NEXT:    "loc": {224// CHECK-NEXT:     "offset": {{[0-9]+}},225// CHECK-NEXT:     "file": "{{.*}}",226// CHECK-NEXT:     "line": 4,227// CHECK-NEXT:     "col": 6,228// CHECK-NEXT:     "tokLen": 1229// CHECK-NEXT:    },230// CHECK-NEXT:    "range": {231// CHECK-NEXT:     "begin": {232// CHECK-NEXT:      "offset": {{[0-9]+}},233// CHECK-NEXT:      "line": 3,234// CHECK-NEXT:      "col": 1,235// CHECK-NEXT:      "tokLen": 8236// CHECK-NEXT:     },237// CHECK-NEXT:     "end": {238// CHECK-NEXT:      "offset": {{[0-9]+}},239// CHECK-NEXT:      "line": 4,240// CHECK-NEXT:      "col": 10,241// CHECK-NEXT:      "tokLen": 1242// CHECK-NEXT:     }243// CHECK-NEXT:    },244// CHECK-NEXT:    "name": "a",245// CHECK-NEXT:    "inner": [246// CHECK-NEXT:     {247// CHECK-NEXT:      "id": "0x{{.*}}",248// CHECK-NEXT:      "kind": "TemplateTypeParmDecl",249// CHECK-NEXT:      "loc": {250// CHECK-NEXT:       "offset": {{[0-9]+}},251// CHECK-NEXT:       "line": 3,252// CHECK-NEXT:       "col": 20,253// CHECK-NEXT:       "tokLen": 2254// CHECK-NEXT:      },255// CHECK-NEXT:      "range": {256// CHECK-NEXT:       "begin": {257// CHECK-NEXT:        "offset": {{[0-9]+}},258// CHECK-NEXT:        "col": 11,259// CHECK-NEXT:        "tokLen": 8260// CHECK-NEXT:       },261// CHECK-NEXT:       "end": {262// CHECK-NEXT:        "offset": {{[0-9]+}},263// CHECK-NEXT:        "col": 20,264// CHECK-NEXT:        "tokLen": 2265// CHECK-NEXT:       }266// CHECK-NEXT:      },267// CHECK-NEXT:      "isReferenced": true,268// CHECK-NEXT:      "name": "Ty",269// CHECK-NEXT:      "tagUsed": "typename",270// CHECK-NEXT:      "depth": 0,271// CHECK-NEXT:      "index": 0272// CHECK-NEXT:     },273// CHECK-NEXT:     {274// CHECK-NEXT:      "id": "0x{{.*}}",275// CHECK-NEXT:      "kind": "FunctionDecl",276// CHECK-NEXT:      "loc": {277// CHECK-NEXT:       "offset": {{[0-9]+}},278// CHECK-NEXT:       "line": 4,279// CHECK-NEXT:       "col": 6,280// CHECK-NEXT:       "tokLen": 1281// CHECK-NEXT:      },282// CHECK-NEXT:      "range": {283// CHECK-NEXT:       "begin": {284// CHECK-NEXT:        "offset": {{[0-9]+}},285// CHECK-NEXT:        "col": 1,286// CHECK-NEXT:        "tokLen": 4287// CHECK-NEXT:       },288// CHECK-NEXT:       "end": {289// CHECK-NEXT:        "offset": {{[0-9]+}},290// CHECK-NEXT:        "col": 10,291// CHECK-NEXT:        "tokLen": 1292// CHECK-NEXT:       }293// CHECK-NEXT:      },294// CHECK-NEXT:      "name": "a",295// CHECK-NEXT:      "type": {296// CHECK-NEXT:       "qualType": "void (Ty)"297// CHECK-NEXT:      },298// CHECK-NEXT:      "inner": [299// CHECK-NEXT:       {300// CHECK-NEXT:        "id": "0x{{.*}}",301// CHECK-NEXT:        "kind": "ParmVarDecl",302// CHECK-NEXT:        "loc": {303// CHECK-NEXT:         "offset": {{[0-9]+}},304// CHECK-NEXT:         "col": 10,305// CHECK-NEXT:         "tokLen": 1306// CHECK-NEXT:        },307// CHECK-NEXT:        "range": {308// CHECK-NEXT:         "begin": {309// CHECK-NEXT:          "offset": {{[0-9]+}},310// CHECK-NEXT:          "col": 8,311// CHECK-NEXT:          "tokLen": 2312// CHECK-NEXT:         },313// CHECK-NEXT:         "end": {314// CHECK-NEXT:          "offset": {{[0-9]+}},315// CHECK-NEXT:          "col": 8,316// CHECK-NEXT:          "tokLen": 2317// CHECK-NEXT:         }318// CHECK-NEXT:        },319// CHECK-NEXT:        "type": {320// CHECK-NEXT:         "qualType": "Ty"321// CHECK-NEXT:        }322// CHECK-NEXT:       }323// CHECK-NEXT:      ]324// CHECK-NEXT:     }325// CHECK-NEXT:    ]326// CHECK-NEXT:   },327// CHECK-NEXT:   {328// CHECK-NEXT:    "id": "0x{{.*}}",329// CHECK-NEXT:    "kind": "FunctionTemplateDecl",330// CHECK-NEXT:    "loc": {331// CHECK-NEXT:     "offset": {{[0-9]+}},332// CHECK-NEXT:     "line": 7,333// CHECK-NEXT:     "col": 6,334// CHECK-NEXT:     "tokLen": 1335// CHECK-NEXT:    },336// CHECK-NEXT:    "range": {337// CHECK-NEXT:     "begin": {338// CHECK-NEXT:      "offset": {{[0-9]+}},339// CHECK-NEXT:      "line": 6,340// CHECK-NEXT:      "col": 1,341// CHECK-NEXT:      "tokLen": 8342// CHECK-NEXT:     },343// CHECK-NEXT:     "end": {344// CHECK-NEXT:      "offset": {{[0-9]+}},345// CHECK-NEXT:      "line": 7,346// CHECK-NEXT:      "col": 13,347// CHECK-NEXT:      "tokLen": 1348// CHECK-NEXT:     }349// CHECK-NEXT:    },350// CHECK-NEXT:    "name": "b",351// CHECK-NEXT:    "inner": [352// CHECK-NEXT:     {353// CHECK-NEXT:      "id": "0x{{.*}}",354// CHECK-NEXT:      "kind": "TemplateTypeParmDecl",355// CHECK-NEXT:      "loc": {356// CHECK-NEXT:       "offset": {{[0-9]+}},357// CHECK-NEXT:       "line": 6,358// CHECK-NEXT:       "col": 23,359// CHECK-NEXT:       "tokLen": 2360// CHECK-NEXT:      },361// CHECK-NEXT:      "range": {362// CHECK-NEXT:       "begin": {363// CHECK-NEXT:        "offset": {{[0-9]+}},364// CHECK-NEXT:        "col": 11,365// CHECK-NEXT:        "tokLen": 8366// CHECK-NEXT:       },367// CHECK-NEXT:       "end": {368// CHECK-NEXT:        "offset": {{[0-9]+}},369// CHECK-NEXT:        "col": 23,370// CHECK-NEXT:        "tokLen": 2371// CHECK-NEXT:       }372// CHECK-NEXT:      },373// CHECK-NEXT:      "isReferenced": true,374// CHECK-NEXT:      "name": "Ty",375// CHECK-NEXT:      "tagUsed": "typename",376// CHECK-NEXT:      "depth": 0,377// CHECK-NEXT:      "index": 0,378// CHECK-NEXT:      "isParameterPack": true379// CHECK-NEXT:     },380// CHECK-NEXT:     {381// CHECK-NEXT:      "id": "0x{{.*}}",382// CHECK-NEXT:      "kind": "FunctionDecl",383// CHECK-NEXT:      "loc": {384// CHECK-NEXT:       "offset": {{[0-9]+}},385// CHECK-NEXT:       "line": 7,386// CHECK-NEXT:       "col": 6,387// CHECK-NEXT:       "tokLen": 1388// CHECK-NEXT:      },389// CHECK-NEXT:      "range": {390// CHECK-NEXT:       "begin": {391// CHECK-NEXT:        "offset": {{[0-9]+}},392// CHECK-NEXT:        "col": 1,393// CHECK-NEXT:        "tokLen": 4394// CHECK-NEXT:       },395// CHECK-NEXT:       "end": {396// CHECK-NEXT:        "offset": {{[0-9]+}},397// CHECK-NEXT:        "col": 13,398// CHECK-NEXT:        "tokLen": 1399// CHECK-NEXT:       }400// CHECK-NEXT:      },401// CHECK-NEXT:      "name": "b",402// CHECK-NEXT:      "type": {403// CHECK-NEXT:       "qualType": "void (Ty...)"404// CHECK-NEXT:      },405// CHECK-NEXT:      "inner": [406// CHECK-NEXT:       {407// CHECK-NEXT:        "id": "0x{{.*}}",408// CHECK-NEXT:        "kind": "ParmVarDecl",409// CHECK-NEXT:        "loc": {410// CHECK-NEXT:         "offset": {{[0-9]+}},411// CHECK-NEXT:         "col": 13,412// CHECK-NEXT:         "tokLen": 1413// CHECK-NEXT:        },414// CHECK-NEXT:        "range": {415// CHECK-NEXT:         "begin": {416// CHECK-NEXT:          "offset": {{[0-9]+}},417// CHECK-NEXT:          "col": 8,418// CHECK-NEXT:          "tokLen": 2419// CHECK-NEXT:         },420// CHECK-NEXT:         "end": {421// CHECK-NEXT:          "offset": {{[0-9]+}},422// CHECK-NEXT:          "col": 10,423// CHECK-NEXT:          "tokLen": 3424// CHECK-NEXT:         }425// CHECK-NEXT:        },426// CHECK-NEXT:        "type": {427// CHECK-NEXT:         "qualType": "Ty..."428// CHECK-NEXT:        },429// CHECK-NEXT:        "isParameterPack": true430// CHECK-NEXT:       }431// CHECK-NEXT:      ]432// CHECK-NEXT:     }433// CHECK-NEXT:    ]434// CHECK-NEXT:   },435// CHECK-NEXT:   {436// CHECK-NEXT:    "id": "0x{{.*}}",437// CHECK-NEXT:    "kind": "FunctionTemplateDecl",438// CHECK-NEXT:    "loc": {439// CHECK-NEXT:     "offset": {{[0-9]+}},440// CHECK-NEXT:     "line": 10,441// CHECK-NEXT:     "col": 6,442// CHECK-NEXT:     "tokLen": 1443// CHECK-NEXT:    },444// CHECK-NEXT:    "range": {445// CHECK-NEXT:     "begin": {446// CHECK-NEXT:      "offset": {{[0-9]+}},447// CHECK-NEXT:      "line": 9,448// CHECK-NEXT:      "col": 1,449// CHECK-NEXT:      "tokLen": 8450// CHECK-NEXT:     },451// CHECK-NEXT:     "end": {452// CHECK-NEXT:      "offset": {{[0-9]+}},453// CHECK-NEXT:      "line": 10,454// CHECK-NEXT:      "col": 10,455// CHECK-NEXT:      "tokLen": 1456// CHECK-NEXT:     }457// CHECK-NEXT:    },458// CHECK-NEXT:    "name": "c",459// CHECK-NEXT:    "inner": [460// CHECK-NEXT:     {461// CHECK-NEXT:      "id": "0x{{.*}}",462// CHECK-NEXT:      "kind": "TemplateTypeParmDecl",463// CHECK-NEXT:      "loc": {464// CHECK-NEXT:       "offset": {{[0-9]+}},465// CHECK-NEXT:       "line": 9,466// CHECK-NEXT:       "col": 17,467// CHECK-NEXT:       "tokLen": 2468// CHECK-NEXT:      },469// CHECK-NEXT:      "range": {470// CHECK-NEXT:       "begin": {471// CHECK-NEXT:        "offset": {{[0-9]+}},472// CHECK-NEXT:        "col": 11,473// CHECK-NEXT:        "tokLen": 5474// CHECK-NEXT:       },475// CHECK-NEXT:       "end": {476// CHECK-NEXT:        "offset": {{[0-9]+}},477// CHECK-NEXT:        "col": 17,478// CHECK-NEXT:        "tokLen": 2479// CHECK-NEXT:       }480// CHECK-NEXT:      },481// CHECK-NEXT:      "isReferenced": true,482// CHECK-NEXT:      "name": "Ty",483// CHECK-NEXT:      "tagUsed": "class",484// CHECK-NEXT:      "depth": 0,485// CHECK-NEXT:      "index": 0486// CHECK-NEXT:     },487// CHECK-NEXT:     {488// CHECK-NEXT:      "id": "0x{{.*}}",489// CHECK-NEXT:      "kind": "TemplateTypeParmDecl",490// CHECK-NEXT:      "loc": {491// CHECK-NEXT:       "offset": {{[0-9]+}},492// CHECK-NEXT:       "col": 30,493// CHECK-NEXT:       "tokLen": 2494// CHECK-NEXT:      },495// CHECK-NEXT:      "range": {496// CHECK-NEXT:       "begin": {497// CHECK-NEXT:        "offset": {{[0-9]+}},498// CHECK-NEXT:        "col": 21,499// CHECK-NEXT:        "tokLen": 8500// CHECK-NEXT:       },501// CHECK-NEXT:       "end": {502// CHECK-NEXT:        "offset": {{[0-9]+}},503// CHECK-NEXT:        "col": 30,504// CHECK-NEXT:        "tokLen": 2505// CHECK-NEXT:       }506// CHECK-NEXT:      },507// CHECK-NEXT:      "name": "Uy",508// CHECK-NEXT:      "tagUsed": "typename",509// CHECK-NEXT:      "depth": 0,510// CHECK-NEXT:      "index": 1511// CHECK-NEXT:     },512// CHECK-NEXT:     {513// CHECK-NEXT:      "id": "0x{{.*}}",514// CHECK-NEXT:      "kind": "FunctionDecl",515// CHECK-NEXT:      "loc": {516// CHECK-NEXT:       "offset": {{[0-9]+}},517// CHECK-NEXT:       "line": 10,518// CHECK-NEXT:       "col": 6,519// CHECK-NEXT:       "tokLen": 1520// CHECK-NEXT:      },521// CHECK-NEXT:      "range": {522// CHECK-NEXT:       "begin": {523// CHECK-NEXT:        "offset": {{[0-9]+}},524// CHECK-NEXT:        "col": 1,525// CHECK-NEXT:        "tokLen": 4526// CHECK-NEXT:       },527// CHECK-NEXT:       "end": {528// CHECK-NEXT:        "offset": {{[0-9]+}},529// CHECK-NEXT:        "col": 10,530// CHECK-NEXT:        "tokLen": 1531// CHECK-NEXT:       }532// CHECK-NEXT:      },533// CHECK-NEXT:      "name": "c",534// CHECK-NEXT:      "type": {535// CHECK-NEXT:       "qualType": "void (Ty)"536// CHECK-NEXT:      },537// CHECK-NEXT:      "inner": [538// CHECK-NEXT:       {539// CHECK-NEXT:        "id": "0x{{.*}}",540// CHECK-NEXT:        "kind": "ParmVarDecl",541// CHECK-NEXT:        "loc": {542// CHECK-NEXT:         "offset": {{[0-9]+}},543// CHECK-NEXT:         "col": 10,544// CHECK-NEXT:         "tokLen": 1545// CHECK-NEXT:        },546// CHECK-NEXT:        "range": {547// CHECK-NEXT:         "begin": {548// CHECK-NEXT:          "offset": {{[0-9]+}},549// CHECK-NEXT:          "col": 8,550// CHECK-NEXT:          "tokLen": 2551// CHECK-NEXT:         },552// CHECK-NEXT:         "end": {553// CHECK-NEXT:          "offset": {{[0-9]+}},554// CHECK-NEXT:          "col": 8,555// CHECK-NEXT:          "tokLen": 2556// CHECK-NEXT:         }557// CHECK-NEXT:        },558// CHECK-NEXT:        "type": {559// CHECK-NEXT:         "qualType": "Ty"560// CHECK-NEXT:        }561// CHECK-NEXT:       }562// CHECK-NEXT:      ]563// CHECK-NEXT:     },564// CHECK-NEXT:     {565// CHECK-NEXT:      "id": "0x{{.*}}",566// CHECK-NEXT:      "kind": "FunctionDecl",567// CHECK-NEXT:      "name": "c",568// CHECK-NEXT:      "type": {569// CHECK-NEXT:       "qualType": "void (float)"570// CHECK-NEXT:      }571// CHECK-NEXT:     }572// CHECK-NEXT:    ]573// CHECK-NEXT:   },574// CHECK-NEXT:   {575// CHECK-NEXT:    "id": "0x{{.*}}",576// CHECK-NEXT:    "kind": "FunctionDecl",577// CHECK-NEXT:    "loc": {578// CHECK-NEXT:     "offset": {{[0-9]+}},579// CHECK-NEXT:     "line": 13,580// CHECK-NEXT:     "col": 6,581// CHECK-NEXT:     "tokLen": 1582// CHECK-NEXT:    },583// CHECK-NEXT:    "range": {584// CHECK-NEXT:     "begin": {585// CHECK-NEXT:      "offset": {{[0-9]+}},586// CHECK-NEXT:      "line": 12,587// CHECK-NEXT:      "col": 1,588// CHECK-NEXT:      "tokLen": 8589// CHECK-NEXT:     },590// CHECK-NEXT:     "end": {591// CHECK-NEXT:      "offset": {{[0-9]+}},592// CHECK-NEXT:      "line": 13,593// CHECK-NEXT:      "col": 25,594// CHECK-NEXT:      "tokLen": 1595// CHECK-NEXT:     }596// CHECK-NEXT:    },597// CHECK-NEXT:    "previousDecl": "0x{{.*}}",598// CHECK-NEXT:    "name": "c",599// CHECK-NEXT:    "mangledName": "_Z1cIfiEvT_",600// CHECK-NEXT:    "type": {601// CHECK-NEXT:     "qualType": "void (float)"602// CHECK-NEXT:    },603// CHECK-NEXT:    "inner": [604// CHECK-NEXT:     {605// CHECK-NEXT:      "kind": "TemplateArgument",606// CHECK-NEXT:      "type": {607// CHECK-NEXT:       "qualType": "float"608// CHECK-NEXT:      },609// CHECK-NEXT:      "inner": [610// CHECK-NEXT:       {611// CHECK-NEXT:        "id": "0x{{.*}}",612// CHECK-NEXT:        "kind": "BuiltinType",613// CHECK-NEXT:        "type": {614// CHECK-NEXT:         "qualType": "float"615// CHECK-NEXT:        }616// CHECK-NEXT:       }617// CHECK-NEXT:      ]618// CHECK-NEXT:     },619// CHECK-NEXT:     {620// CHECK-NEXT:      "kind": "TemplateArgument",621// CHECK-NEXT:      "type": {622// CHECK-NEXT:       "qualType": "int"623// CHECK-NEXT:      },624// CHECK-NEXT:      "inner": [625// CHECK-NEXT:       {626// CHECK-NEXT:        "id": "0x{{.*}}",627// CHECK-NEXT:        "kind": "BuiltinType",628// CHECK-NEXT:        "type": {629// CHECK-NEXT:         "qualType": "int"630// CHECK-NEXT:        }631// CHECK-NEXT:       }632// CHECK-NEXT:      ]633// CHECK-NEXT:     },634// CHECK-NEXT:     {635// CHECK-NEXT:      "id": "0x{{.*}}",636// CHECK-NEXT:      "kind": "ParmVarDecl",637// CHECK-NEXT:      "loc": {638// CHECK-NEXT:       "offset": {{[0-9]+}},639// CHECK-NEXT:       "col": 25,640// CHECK-NEXT:       "tokLen": 1641// CHECK-NEXT:      },642// CHECK-NEXT:      "range": {643// CHECK-NEXT:       "begin": {644// CHECK-NEXT:        "offset": {{[0-9]+}},645// CHECK-NEXT:        "col": 20,646// CHECK-NEXT:        "tokLen": 5647// CHECK-NEXT:       },648// CHECK-NEXT:       "end": {649// CHECK-NEXT:        "offset": {{[0-9]+}},650// CHECK-NEXT:        "col": 20,651// CHECK-NEXT:        "tokLen": 5652// CHECK-NEXT:       }653// CHECK-NEXT:      },654// CHECK-NEXT:      "type": {655// CHECK-NEXT:       "qualType": "float"656// CHECK-NEXT:      }657// CHECK-NEXT:     }658// CHECK-NEXT:    ]659// CHECK-NEXT:   },660// CHECK-NEXT:   {661// CHECK-NEXT:    "id": "0x{{.*}}",662// CHECK-NEXT:    "kind": "FunctionTemplateDecl",663// CHECK-NEXT:    "loc": {664// CHECK-NEXT:     "offset": {{[0-9]+}},665// CHECK-NEXT:     "line": 16,666// CHECK-NEXT:     "col": 6,667// CHECK-NEXT:     "tokLen": 1668// CHECK-NEXT:    },669// CHECK-NEXT:    "range": {670// CHECK-NEXT:     "begin": {671// CHECK-NEXT:      "offset": {{[0-9]+}},672// CHECK-NEXT:      "line": 15,673// CHECK-NEXT:      "col": 1,674// CHECK-NEXT:      "tokLen": 8675// CHECK-NEXT:     },676// CHECK-NEXT:     "end": {677// CHECK-NEXT:      "offset": {{[0-9]+}},678// CHECK-NEXT:      "line": 16,679// CHECK-NEXT:      "col": 18,680// CHECK-NEXT:      "tokLen": 1681// CHECK-NEXT:     }682// CHECK-NEXT:    },683// CHECK-NEXT:    "name": "d",684// CHECK-NEXT:    "inner": [685// CHECK-NEXT:     {686// CHECK-NEXT:      "id": "0x{{.*}}",687// CHECK-NEXT:      "kind": "TemplateTypeParmDecl",688// CHECK-NEXT:      "loc": {689// CHECK-NEXT:       "offset": {{[0-9]+}},690// CHECK-NEXT:       "line": 15,691// CHECK-NEXT:       "col": 20,692// CHECK-NEXT:       "tokLen": 2693// CHECK-NEXT:      },694// CHECK-NEXT:      "range": {695// CHECK-NEXT:       "begin": {696// CHECK-NEXT:        "offset": {{[0-9]+}},697// CHECK-NEXT:        "col": 11,698// CHECK-NEXT:        "tokLen": 8699// CHECK-NEXT:       },700// CHECK-NEXT:       "end": {701// CHECK-NEXT:        "offset": {{[0-9]+}},702// CHECK-NEXT:        "col": 20,703// CHECK-NEXT:        "tokLen": 2704// CHECK-NEXT:       }705// CHECK-NEXT:      },706// CHECK-NEXT:      "isReferenced": true,707// CHECK-NEXT:      "name": "Ty",708// CHECK-NEXT:      "tagUsed": "typename",709// CHECK-NEXT:      "depth": 0,710// CHECK-NEXT:      "index": 0711// CHECK-NEXT:     },712// CHECK-NEXT:     {713// CHECK-NEXT:      "id": "0x{{.*}}",714// CHECK-NEXT:      "kind": "TemplateTemplateParmDecl",715// CHECK-NEXT:      "loc": {716// CHECK-NEXT:       "offset": {{[0-9]+}},717// CHECK-NEXT:       "col": 52,718// CHECK-NEXT:       "tokLen": 2719// CHECK-NEXT:      },720// CHECK-NEXT:      "range": {721// CHECK-NEXT:       "begin": {722// CHECK-NEXT:        "offset": {{[0-9]+}},723// CHECK-NEXT:        "col": 24,724// CHECK-NEXT:        "tokLen": 8725// CHECK-NEXT:       },726// CHECK-NEXT:       "end": {727// CHECK-NEXT:        "offset": {{[0-9]+}},728// CHECK-NEXT:        "col": 52,729// CHECK-NEXT:        "tokLen": 2730// CHECK-NEXT:       }731// CHECK-NEXT:      },732// CHECK-NEXT:      "name": "Uy",733// CHECK-NEXT:      "depth": 0,734// CHECK-NEXT:      "index": 1,735// CHECK-NEXT:      "inner": [736// CHECK-NEXT:       {737// CHECK-NEXT:        "id": "0x{{.*}}",738// CHECK-NEXT:        "kind": "TemplateTypeParmDecl",739// CHECK-NEXT:        "loc": {740// CHECK-NEXT:         "offset": {{[0-9]+}},741// CHECK-NEXT:         "col": 41,742// CHECK-NEXT:         "tokLen": 1743// CHECK-NEXT:        },744// CHECK-NEXT:        "range": {745// CHECK-NEXT:         "begin": {746// CHECK-NEXT:          "offset": {{[0-9]+}},747// CHECK-NEXT:          "col": 33,748// CHECK-NEXT:          "tokLen": 8749// CHECK-NEXT:         },750// CHECK-NEXT:         "end": {751// CHECK-NEXT:          "offset": {{[0-9]+}},752// CHECK-NEXT:          "col": 33,753// CHECK-NEXT:          "tokLen": 8754// CHECK-NEXT:         }755// CHECK-NEXT:        },756// CHECK-NEXT:        "tagUsed": "typename",757// CHECK-NEXT:        "depth": 1,758// CHECK-NEXT:        "index": 0759// CHECK-NEXT:       }760// CHECK-NEXT:      ]761// CHECK-NEXT:     },762// CHECK-NEXT:     {763// CHECK-NEXT:      "id": "0x{{.*}}",764// CHECK-NEXT:      "kind": "FunctionDecl",765// CHECK-NEXT:      "loc": {766// CHECK-NEXT:       "offset": {{[0-9]+}},767// CHECK-NEXT:       "line": 16,768// CHECK-NEXT:       "col": 6,769// CHECK-NEXT:       "tokLen": 1770// CHECK-NEXT:      },771// CHECK-NEXT:      "range": {772// CHECK-NEXT:       "begin": {773// CHECK-NEXT:        "offset": {{[0-9]+}},774// CHECK-NEXT:        "col": 1,775// CHECK-NEXT:        "tokLen": 4776// CHECK-NEXT:       },777// CHECK-NEXT:       "end": {778// CHECK-NEXT:        "offset": {{[0-9]+}},779// CHECK-NEXT:        "col": 18,780// CHECK-NEXT:        "tokLen": 1781// CHECK-NEXT:       }782// CHECK-NEXT:      },783// CHECK-NEXT:      "name": "d",784// CHECK-NEXT:      "type": {785// CHECK-NEXT:       "qualType": "void (Ty, Uy<Ty>)"786// CHECK-NEXT:      },787// CHECK-NEXT:      "inner": [788// CHECK-NEXT:       {789// CHECK-NEXT:        "id": "0x{{.*}}",790// CHECK-NEXT:        "kind": "ParmVarDecl",791// CHECK-NEXT:        "loc": {792// CHECK-NEXT:         "offset": {{[0-9]+}},793// CHECK-NEXT:         "col": 10,794// CHECK-NEXT:         "tokLen": 1795// CHECK-NEXT:        },796// CHECK-NEXT:        "range": {797// CHECK-NEXT:         "begin": {798// CHECK-NEXT:          "offset": {{[0-9]+}},799// CHECK-NEXT:          "col": 8,800// CHECK-NEXT:          "tokLen": 2801// CHECK-NEXT:         },802// CHECK-NEXT:         "end": {803// CHECK-NEXT:          "offset": {{[0-9]+}},804// CHECK-NEXT:          "col": 8,805// CHECK-NEXT:          "tokLen": 2806// CHECK-NEXT:         }807// CHECK-NEXT:        },808// CHECK-NEXT:        "type": {809// CHECK-NEXT:         "qualType": "Ty"810// CHECK-NEXT:        }811// CHECK-NEXT:       },812// CHECK-NEXT:       {813// CHECK-NEXT:        "id": "0x{{.*}}",814// CHECK-NEXT:        "kind": "ParmVarDecl",815// CHECK-NEXT:        "loc": {816// CHECK-NEXT:         "offset": {{[0-9]+}},817// CHECK-NEXT:         "col": 18,818// CHECK-NEXT:         "tokLen": 1819// CHECK-NEXT:        },820// CHECK-NEXT:        "range": {821// CHECK-NEXT:         "begin": {822// CHECK-NEXT:          "offset": {{[0-9]+}},823// CHECK-NEXT:          "col": 12,824// CHECK-NEXT:          "tokLen": 2825// CHECK-NEXT:         },826// CHECK-NEXT:         "end": {827// CHECK-NEXT:          "offset": {{[0-9]+}},828// CHECK-NEXT:          "col": 17,829// CHECK-NEXT:          "tokLen": 1830// CHECK-NEXT:         }831// CHECK-NEXT:        },832// CHECK-NEXT:        "type": {833// CHECK-NEXT:         "qualType": "Uy<Ty>"834// CHECK-NEXT:        }835// CHECK-NEXT:       }836// CHECK-NEXT:      ]837// CHECK-NEXT:     }838// CHECK-NEXT:    ]839// CHECK-NEXT:   },840// CHECK-NEXT:   {841// CHECK-NEXT:    "id": "0x{{.*}}",842// CHECK-NEXT:    "kind": "FunctionTemplateDecl",843// CHECK-NEXT:    "loc": {844// CHECK-NEXT:     "offset": {{[0-9]+}},845// CHECK-NEXT:     "line": 19,846// CHECK-NEXT:     "col": 6,847// CHECK-NEXT:     "tokLen": 1848// CHECK-NEXT:    },849// CHECK-NEXT:    "range": {850// CHECK-NEXT:     "begin": {851// CHECK-NEXT:      "offset": {{[0-9]+}},852// CHECK-NEXT:      "line": 18,853// CHECK-NEXT:      "col": 1,854// CHECK-NEXT:      "tokLen": 8855// CHECK-NEXT:     },856// CHECK-NEXT:     "end": {857// CHECK-NEXT:      "offset": {{[0-9]+}},858// CHECK-NEXT:      "line": 19,859// CHECK-NEXT:      "col": 10,860// CHECK-NEXT:      "tokLen": 1861// CHECK-NEXT:     }862// CHECK-NEXT:    },863// CHECK-NEXT:    "name": "e",864// CHECK-NEXT:    "inner": [865// CHECK-NEXT:     {866// CHECK-NEXT:      "id": "0x{{.*}}",867// CHECK-NEXT:      "kind": "TemplateTypeParmDecl",868// CHECK-NEXT:      "loc": {869// CHECK-NEXT:       "offset": {{[0-9]+}},870// CHECK-NEXT:       "line": 18,871// CHECK-NEXT:       "col": 17,872// CHECK-NEXT:       "tokLen": 2873// CHECK-NEXT:      },874// CHECK-NEXT:      "range": {875// CHECK-NEXT:       "begin": {876// CHECK-NEXT:        "offset": {{[0-9]+}},877// CHECK-NEXT:        "col": 11,878// CHECK-NEXT:        "tokLen": 5879// CHECK-NEXT:       },880// CHECK-NEXT:       "end": {881// CHECK-NEXT:        "offset": {{[0-9]+}},882// CHECK-NEXT:        "col": 17,883// CHECK-NEXT:        "tokLen": 2884// CHECK-NEXT:       }885// CHECK-NEXT:      },886// CHECK-NEXT:      "isReferenced": true,887// CHECK-NEXT:      "name": "Ty",888// CHECK-NEXT:      "tagUsed": "class",889// CHECK-NEXT:      "depth": 0,890// CHECK-NEXT:      "index": 0891// CHECK-NEXT:     },892// CHECK-NEXT:     {893// CHECK-NEXT:      "id": "0x{{.*}}",894// CHECK-NEXT:      "kind": "FunctionDecl",895// CHECK-NEXT:      "loc": {896// CHECK-NEXT:       "offset": {{[0-9]+}},897// CHECK-NEXT:       "line": 19,898// CHECK-NEXT:       "col": 6,899// CHECK-NEXT:       "tokLen": 1900// CHECK-NEXT:      },901// CHECK-NEXT:      "range": {902// CHECK-NEXT:       "begin": {903// CHECK-NEXT:        "offset": {{[0-9]+}},904// CHECK-NEXT:        "col": 1,905// CHECK-NEXT:        "tokLen": 4906// CHECK-NEXT:       },907// CHECK-NEXT:       "end": {908// CHECK-NEXT:        "offset": {{[0-9]+}},909// CHECK-NEXT:        "col": 10,910// CHECK-NEXT:        "tokLen": 1911// CHECK-NEXT:       }912// CHECK-NEXT:      },913// CHECK-NEXT:      "name": "e",914// CHECK-NEXT:      "type": {915// CHECK-NEXT:       "qualType": "void (Ty)"916// CHECK-NEXT:      },917// CHECK-NEXT:      "inner": [918// CHECK-NEXT:       {919// CHECK-NEXT:        "id": "0x{{.*}}",920// CHECK-NEXT:        "kind": "ParmVarDecl",921// CHECK-NEXT:        "loc": {922// CHECK-NEXT:         "offset": {{[0-9]+}},923// CHECK-NEXT:         "col": 10,924// CHECK-NEXT:         "tokLen": 1925// CHECK-NEXT:        },926// CHECK-NEXT:        "range": {927// CHECK-NEXT:         "begin": {928// CHECK-NEXT:          "offset": {{[0-9]+}},929// CHECK-NEXT:          "col": 8,930// CHECK-NEXT:          "tokLen": 2931// CHECK-NEXT:         },932// CHECK-NEXT:         "end": {933// CHECK-NEXT:          "offset": {{[0-9]+}},934// CHECK-NEXT:          "col": 8,935// CHECK-NEXT:          "tokLen": 2936// CHECK-NEXT:         }937// CHECK-NEXT:        },938// CHECK-NEXT:        "type": {939// CHECK-NEXT:         "qualType": "Ty"940// CHECK-NEXT:        }941// CHECK-NEXT:       }942// CHECK-NEXT:      ]943// CHECK-NEXT:     }944// CHECK-NEXT:    ]945// CHECK-NEXT:   },946// CHECK-NEXT:   {947// CHECK-NEXT:    "id": "0x{{.*}}",948// CHECK-NEXT:    "kind": "FunctionTemplateDecl",949// CHECK-NEXT:    "loc": {950// CHECK-NEXT:     "offset": {{[0-9]+}},951// CHECK-NEXT:     "line": 22,952// CHECK-NEXT:     "col": 6,953// CHECK-NEXT:     "tokLen": 1954// CHECK-NEXT:    },955// CHECK-NEXT:    "range": {956// CHECK-NEXT:     "begin": {957// CHECK-NEXT:      "offset": {{[0-9]+}},958// CHECK-NEXT:      "line": 21,959// CHECK-NEXT:      "col": 1,960// CHECK-NEXT:      "tokLen": 8961// CHECK-NEXT:     },962// CHECK-NEXT:     "end": {963// CHECK-NEXT:      "offset": {{[0-9]+}},964// CHECK-NEXT:      "line": 22,965// CHECK-NEXT:      "col": 17,966// CHECK-NEXT:      "tokLen": 1967// CHECK-NEXT:     }968// CHECK-NEXT:    },969// CHECK-NEXT:    "name": "f",970// CHECK-NEXT:    "inner": [971// CHECK-NEXT:     {972// CHECK-NEXT:      "id": "0x{{.*}}",973// CHECK-NEXT:      "kind": "NonTypeTemplateParmDecl",974// CHECK-NEXT:      "loc": {975// CHECK-NEXT:       "offset": {{[0-9]+}},976// CHECK-NEXT:       "line": 21,977// CHECK-NEXT:       "col": 15,978// CHECK-NEXT:       "tokLen": 1979// CHECK-NEXT:      },980// CHECK-NEXT:      "range": {981// CHECK-NEXT:       "begin": {982// CHECK-NEXT:        "offset": {{[0-9]+}},983// CHECK-NEXT:        "col": 11,984// CHECK-NEXT:        "tokLen": 3985// CHECK-NEXT:       },986// CHECK-NEXT:       "end": {987// CHECK-NEXT:        "offset": {{[0-9]+}},988// CHECK-NEXT:        "col": 15,989// CHECK-NEXT:        "tokLen": 1990// CHECK-NEXT:       }991// CHECK-NEXT:      },992// CHECK-NEXT:      "isReferenced": true,993// CHECK-NEXT:      "name": "N",994// CHECK-NEXT:      "type": {995// CHECK-NEXT:       "qualType": "int"996// CHECK-NEXT:      },997// CHECK-NEXT:      "depth": 0,998// CHECK-NEXT:      "index": 0999// CHECK-NEXT:     },1000// CHECK-NEXT:     {1001// CHECK-NEXT:      "id": "0x{{.*}}",1002// CHECK-NEXT:      "kind": "FunctionDecl",1003// CHECK-NEXT:      "loc": {1004// CHECK-NEXT:       "offset": {{[0-9]+}},1005// CHECK-NEXT:       "line": 22,1006// CHECK-NEXT:       "col": 6,1007// CHECK-NEXT:       "tokLen": 11008// CHECK-NEXT:      },1009// CHECK-NEXT:      "range": {1010// CHECK-NEXT:       "begin": {1011// CHECK-NEXT:        "offset": {{[0-9]+}},1012// CHECK-NEXT:        "col": 1,1013// CHECK-NEXT:        "tokLen": 41014// CHECK-NEXT:       },1015// CHECK-NEXT:       "end": {1016// CHECK-NEXT:        "offset": {{[0-9]+}},1017// CHECK-NEXT:        "col": 17,1018// CHECK-NEXT:        "tokLen": 11019// CHECK-NEXT:       }1020// CHECK-NEXT:      },1021// CHECK-NEXT:      "name": "f",1022// CHECK-NEXT:      "type": {1023// CHECK-NEXT:       "qualType": "void (int)"1024// CHECK-NEXT:      },1025// CHECK-NEXT:      "inner": [1026// CHECK-NEXT:       {1027// CHECK-NEXT:        "id": "0x{{.*}}",1028// CHECK-NEXT:        "kind": "ParmVarDecl",1029// CHECK-NEXT:        "loc": {1030// CHECK-NEXT:         "offset": {{[0-9]+}},1031// CHECK-NEXT:         "col": 12,1032// CHECK-NEXT:         "tokLen": 11033// CHECK-NEXT:        },1034// CHECK-NEXT:        "range": {1035// CHECK-NEXT:         "begin": {1036// CHECK-NEXT:          "offset": {{[0-9]+}},1037// CHECK-NEXT:          "col": 8,1038// CHECK-NEXT:          "tokLen": 31039// CHECK-NEXT:         },1040// CHECK-NEXT:         "end": {1041// CHECK-NEXT:          "offset": {{[0-9]+}},1042// CHECK-NEXT:          "col": 16,1043// CHECK-NEXT:          "tokLen": 11044// CHECK-NEXT:         }1045// CHECK-NEXT:        },1046// CHECK-NEXT:        "name": "i",1047// CHECK-NEXT:        "type": {1048// CHECK-NEXT:         "qualType": "int"1049// CHECK-NEXT:        },1050// CHECK-NEXT:        "init": "c",1051// CHECK-NEXT:        "inner": [1052// CHECK-NEXT:         {1053// CHECK-NEXT:          "id": "0x{{.*}}",1054// CHECK-NEXT:          "kind": "DeclRefExpr",1055// CHECK-NEXT:          "range": {1056// CHECK-NEXT:           "begin": {1057// CHECK-NEXT:            "offset": {{[0-9]+}},1058// CHECK-NEXT:            "col": 16,1059// CHECK-NEXT:            "tokLen": 11060// CHECK-NEXT:           },1061// CHECK-NEXT:           "end": {1062// CHECK-NEXT:            "offset": {{[0-9]+}},1063// CHECK-NEXT:            "col": 16,1064// CHECK-NEXT:            "tokLen": 11065// CHECK-NEXT:           }1066// CHECK-NEXT:          },1067// CHECK-NEXT:          "type": {1068// CHECK-NEXT:           "qualType": "int"1069// CHECK-NEXT:          },1070// CHECK-NEXT:          "valueCategory": "prvalue",1071// CHECK-NEXT:          "referencedDecl": {1072// CHECK-NEXT:           "id": "0x{{.*}}",1073// CHECK-NEXT:           "kind": "NonTypeTemplateParmDecl",1074// CHECK-NEXT:           "name": "N",1075// CHECK-NEXT:           "type": {1076// CHECK-NEXT:            "qualType": "int"1077// CHECK-NEXT:           }1078// CHECK-NEXT:          }1079// CHECK-NEXT:         }1080// CHECK-NEXT:        ]1081// CHECK-NEXT:       }1082// CHECK-NEXT:      ]1083// CHECK-NEXT:     }1084// CHECK-NEXT:    ]1085// CHECK-NEXT:   },1086// CHECK-NEXT:   {1087// CHECK-NEXT:    "id": "0x{{.*}}",1088// CHECK-NEXT:    "kind": "FunctionTemplateDecl",1089// CHECK-NEXT:    "loc": {1090// CHECK-NEXT:     "offset": {{[0-9]+}},1091// CHECK-NEXT:     "line": 25,1092// CHECK-NEXT:     "col": 6,1093// CHECK-NEXT:     "tokLen": 11094// CHECK-NEXT:    },1095// CHECK-NEXT:    "range": {1096// CHECK-NEXT:     "begin": {1097// CHECK-NEXT:      "offset": {{[0-9]+}},1098// CHECK-NEXT:      "line": 24,1099// CHECK-NEXT:      "col": 1,1100// CHECK-NEXT:      "tokLen": 81101// CHECK-NEXT:     },1102// CHECK-NEXT:     "end": {1103// CHECK-NEXT:      "offset": {{[0-9]+}},1104// CHECK-NEXT:      "line": 25,1105// CHECK-NEXT:      "col": 10,1106// CHECK-NEXT:      "tokLen": 11107// CHECK-NEXT:     }1108// CHECK-NEXT:    },1109// CHECK-NEXT:    "name": "g",1110// CHECK-NEXT:    "inner": [1111// CHECK-NEXT:     {1112// CHECK-NEXT:      "id": "0x{{.*}}",1113// CHECK-NEXT:      "kind": "TemplateTypeParmDecl",1114// CHECK-NEXT:      "loc": {1115// CHECK-NEXT:       "offset": {{[0-9]+}},1116// CHECK-NEXT:       "line": 24,1117// CHECK-NEXT:       "col": 20,1118// CHECK-NEXT:       "tokLen": 21119// CHECK-NEXT:      },1120// CHECK-NEXT:      "range": {1121// CHECK-NEXT:       "begin": {1122// CHECK-NEXT:        "offset": {{[0-9]+}},1123// CHECK-NEXT:        "col": 11,1124// CHECK-NEXT:        "tokLen": 81125// CHECK-NEXT:       },1126// CHECK-NEXT:       "end": {1127// CHECK-NEXT:        "offset": {{[0-9]+}},1128// CHECK-NEXT:        "col": 25,1129// CHECK-NEXT:        "tokLen": 31130// CHECK-NEXT:       }1131// CHECK-NEXT:      },1132// CHECK-NEXT:      "isReferenced": true,1133// CHECK-NEXT:      "name": "Ty",1134// CHECK-NEXT:      "tagUsed": "typename",1135// CHECK-NEXT:      "depth": 0,1136// CHECK-NEXT:      "index": 0,1137// CHECK-NEXT:      "defaultArg": {1138// CHECK-NEXT:       "kind": "TemplateArgument",1139// CHECK-NEXT:       "type": {1140// CHECK-NEXT:        "qualType": "int"1141// CHECK-NEXT:       }1142// CHECK-NEXT:      },1143// CHECK-NEXT:      "inner": [1144// CHECK-NEXT:       {1145// CHECK-NEXT:        "kind": "TemplateArgument",1146// CHECK-NEXT:        "type": {1147// CHECK-NEXT:         "qualType": "int"1148// CHECK-NEXT:        },1149// CHECK-NEXT:        "inner": [1150// CHECK-NEXT:         {1151// CHECK-NEXT:          "id": "0x{{.*}}",1152// CHECK-NEXT:          "kind": "BuiltinType",1153// CHECK-NEXT:          "type": {1154// CHECK-NEXT:           "qualType": "int"1155// CHECK-NEXT:          }1156// CHECK-NEXT:         }1157// CHECK-NEXT:        ]1158// CHECK-NEXT:       }1159// CHECK-NEXT:      ]1160// CHECK-NEXT:     },1161// CHECK-NEXT:     {1162// CHECK-NEXT:      "id": "0x{{.*}}",1163// CHECK-NEXT:      "kind": "FunctionDecl",1164// CHECK-NEXT:      "loc": {1165// CHECK-NEXT:       "offset": {{[0-9]+}},1166// CHECK-NEXT:       "line": 25,1167// CHECK-NEXT:       "col": 6,1168// CHECK-NEXT:       "tokLen": 11169// CHECK-NEXT:      },1170// CHECK-NEXT:      "range": {1171// CHECK-NEXT:       "begin": {1172// CHECK-NEXT:        "offset": {{[0-9]+}},1173// CHECK-NEXT:        "col": 1,1174// CHECK-NEXT:        "tokLen": 41175// CHECK-NEXT:       },1176// CHECK-NEXT:       "end": {1177// CHECK-NEXT:        "offset": {{[0-9]+}},1178// CHECK-NEXT:        "col": 10,1179// CHECK-NEXT:        "tokLen": 11180// CHECK-NEXT:       }1181// CHECK-NEXT:      },1182// CHECK-NEXT:      "name": "g",1183// CHECK-NEXT:      "type": {1184// CHECK-NEXT:       "qualType": "void (Ty)"1185// CHECK-NEXT:      },1186// CHECK-NEXT:      "inner": [1187// CHECK-NEXT:       {1188// CHECK-NEXT:        "id": "0x{{.*}}",1189// CHECK-NEXT:        "kind": "ParmVarDecl",1190// CHECK-NEXT:        "loc": {1191// CHECK-NEXT:         "offset": {{[0-9]+}},1192// CHECK-NEXT:         "col": 10,1193// CHECK-NEXT:         "tokLen": 11194// CHECK-NEXT:        },1195// CHECK-NEXT:        "range": {1196// CHECK-NEXT:         "begin": {1197// CHECK-NEXT:          "offset": {{[0-9]+}},1198// CHECK-NEXT:          "col": 8,1199// CHECK-NEXT:          "tokLen": 21200// CHECK-NEXT:         },1201// CHECK-NEXT:         "end": {1202// CHECK-NEXT:          "offset": {{[0-9]+}},1203// CHECK-NEXT:          "col": 8,1204// CHECK-NEXT:          "tokLen": 21205// CHECK-NEXT:         }1206// CHECK-NEXT:        },1207// CHECK-NEXT:        "type": {1208// CHECK-NEXT:         "qualType": "Ty"1209// CHECK-NEXT:        }1210// CHECK-NEXT:       }1211// CHECK-NEXT:      ]1212// CHECK-NEXT:     }1213// CHECK-NEXT:    ]1214// CHECK-NEXT:   },1215// CHECK-NEXT:   {1216// CHECK-NEXT:    "id": "0x{{.*}}",1217// CHECK-NEXT:    "kind": "FunctionTemplateDecl",1218// CHECK-NEXT:    "loc": {1219// CHECK-NEXT:     "offset": {{[0-9]+}},1220// CHECK-NEXT:     "line": 28,1221// CHECK-NEXT:     "col": 6,1222// CHECK-NEXT:     "tokLen": 11223// CHECK-NEXT:    },1224// CHECK-NEXT:    "range": {1225// CHECK-NEXT:     "begin": {1226// CHECK-NEXT:      "offset": {{[0-9]+}},1227// CHECK-NEXT:      "line": 27,1228// CHECK-NEXT:      "col": 1,1229// CHECK-NEXT:      "tokLen": 81230// CHECK-NEXT:     },1231// CHECK-NEXT:     "end": {1232// CHECK-NEXT:      "offset": {{[0-9]+}},1233// CHECK-NEXT:      "line": 28,1234// CHECK-NEXT:      "col": 8,1235// CHECK-NEXT:      "tokLen": 11236// CHECK-NEXT:     }1237// CHECK-NEXT:    },1238// CHECK-NEXT:    "name": "h",1239// CHECK-NEXT:    "inner": [1240// CHECK-NEXT:     {1241// CHECK-NEXT:      "id": "0x{{.*}}",1242// CHECK-NEXT:      "kind": "TemplateTypeParmDecl",1243// CHECK-NEXT:      "loc": {1244// CHECK-NEXT:       "offset": {{[0-9]+}},1245// CHECK-NEXT:       "line": 27,1246// CHECK-NEXT:       "col": 20,1247// CHECK-NEXT:       "tokLen": 11248// CHECK-NEXT:      },1249// CHECK-NEXT:      "range": {1250// CHECK-NEXT:       "begin": {1251// CHECK-NEXT:        "offset": {{[0-9]+}},1252// CHECK-NEXT:        "col": 11,1253// CHECK-NEXT:        "tokLen": 81254// CHECK-NEXT:       },1255// CHECK-NEXT:       "end": {1256// CHECK-NEXT:        "offset": {{[0-9]+}},1257// CHECK-NEXT:        "col": 22,1258// CHECK-NEXT:        "tokLen": 41259// CHECK-NEXT:       }1260// CHECK-NEXT:      },1261// CHECK-NEXT:      "tagUsed": "typename",1262// CHECK-NEXT:      "depth": 0,1263// CHECK-NEXT:      "index": 0,1264// CHECK-NEXT:      "defaultArg": {1265// CHECK-NEXT:       "kind": "TemplateArgument",1266// CHECK-NEXT:       "type": {1267// CHECK-NEXT:        "qualType": "void"1268// CHECK-NEXT:       }1269// CHECK-NEXT:      },1270// CHECK-NEXT:      "inner": [1271// CHECK-NEXT:       {1272// CHECK-NEXT:        "kind": "TemplateArgument",1273// CHECK-NEXT:        "type": {1274// CHECK-NEXT:         "qualType": "void"1275// CHECK-NEXT:        },1276// CHECK-NEXT:        "inner": [1277// CHECK-NEXT:         {1278// CHECK-NEXT:          "id": "0x{{.*}}",1279// CHECK-NEXT:          "kind": "BuiltinType",1280// CHECK-NEXT:          "type": {1281// CHECK-NEXT:           "qualType": "void"1282// CHECK-NEXT:          }1283// CHECK-NEXT:         }1284// CHECK-NEXT:        ]1285// CHECK-NEXT:       }1286// CHECK-NEXT:      ]1287// CHECK-NEXT:     },1288// CHECK-NEXT:     {1289// CHECK-NEXT:      "id": "0x{{.*}}",1290// CHECK-NEXT:      "kind": "FunctionDecl",1291// CHECK-NEXT:      "loc": {1292// CHECK-NEXT:       "offset": {{[0-9]+}},1293// CHECK-NEXT:       "line": 28,1294// CHECK-NEXT:       "col": 6,1295// CHECK-NEXT:       "tokLen": 11296// CHECK-NEXT:      },1297// CHECK-NEXT:      "range": {1298// CHECK-NEXT:       "begin": {1299// CHECK-NEXT:        "offset": {{[0-9]+}},1300// CHECK-NEXT:        "col": 1,1301// CHECK-NEXT:        "tokLen": 41302// CHECK-NEXT:       },1303// CHECK-NEXT:       "end": {1304// CHECK-NEXT:        "offset": {{[0-9]+}},1305// CHECK-NEXT:        "col": 8,1306// CHECK-NEXT:        "tokLen": 11307// CHECK-NEXT:       }1308// CHECK-NEXT:      },1309// CHECK-NEXT:      "name": "h",1310// CHECK-NEXT:      "type": {1311// CHECK-NEXT:       "qualType": "void ()"1312// CHECK-NEXT:      }1313// CHECK-NEXT:     }1314// CHECK-NEXT:    ]1315// CHECK-NEXT:   },1316// CHECK-NEXT:   {1317// CHECK-NEXT:    "id": "0x{{.*}}",1318// CHECK-NEXT:    "kind": "ClassTemplateDecl",1319// CHECK-NEXT:    "loc": {1320// CHECK-NEXT:     "offset": {{[0-9]+}},1321// CHECK-NEXT:     "line": 31,1322// CHECK-NEXT:     "col": 8,1323// CHECK-NEXT:     "tokLen": 11324// CHECK-NEXT:    },1325// CHECK-NEXT:    "range": {1326// CHECK-NEXT:     "begin": {1327// CHECK-NEXT:      "offset": {{[0-9]+}},1328// CHECK-NEXT:      "line": 30,1329// CHECK-NEXT:      "col": 1,1330// CHECK-NEXT:      "tokLen": 81331// CHECK-NEXT:     },1332// CHECK-NEXT:     "end": {1333// CHECK-NEXT:      "offset": {{[0-9]+}},1334// CHECK-NEXT:      "line": 31,1335// CHECK-NEXT:      "col": 11,1336// CHECK-NEXT:      "tokLen": 11337// CHECK-NEXT:     }1338// CHECK-NEXT:    },1339// CHECK-NEXT:    "name": "R",1340// CHECK-NEXT:    "inner": [1341// CHECK-NEXT:     {1342// CHECK-NEXT:      "id": "0x{{.*}}",1343// CHECK-NEXT:      "kind": "TemplateTypeParmDecl",1344// CHECK-NEXT:      "loc": {1345// CHECK-NEXT:       "offset": {{[0-9]+}},1346// CHECK-NEXT:       "line": 30,1347// CHECK-NEXT:       "col": 20,1348// CHECK-NEXT:       "tokLen": 21349// CHECK-NEXT:      },1350// CHECK-NEXT:      "range": {1351// CHECK-NEXT:       "begin": {1352// CHECK-NEXT:        "offset": {{[0-9]+}},1353// CHECK-NEXT:        "col": 11,1354// CHECK-NEXT:        "tokLen": 81355// CHECK-NEXT:       },1356// CHECK-NEXT:       "end": {1357// CHECK-NEXT:        "offset": {{[0-9]+}},1358// CHECK-NEXT:        "col": 20,1359// CHECK-NEXT:        "tokLen": 21360// CHECK-NEXT:       }1361// CHECK-NEXT:      },1362// CHECK-NEXT:      "name": "Ty",1363// CHECK-NEXT:      "tagUsed": "typename",1364// CHECK-NEXT:      "depth": 0,1365// CHECK-NEXT:      "index": 01366// CHECK-NEXT:     },1367// CHECK-NEXT:     {1368// CHECK-NEXT:      "id": "0x{{.*}}",1369// CHECK-NEXT:      "kind": "CXXRecordDecl",1370// CHECK-NEXT:      "loc": {1371// CHECK-NEXT:       "offset": {{[0-9]+}},1372// CHECK-NEXT:       "line": 31,1373// CHECK-NEXT:       "col": 8,1374// CHECK-NEXT:       "tokLen": 11375// CHECK-NEXT:      },1376// CHECK-NEXT:      "range": {1377// CHECK-NEXT:       "begin": {1378// CHECK-NEXT:        "offset": {{[0-9]+}},1379// CHECK-NEXT:        "col": 1,1380// CHECK-NEXT:        "tokLen": 61381// CHECK-NEXT:       },1382// CHECK-NEXT:       "end": {1383// CHECK-NEXT:        "offset": {{[0-9]+}},1384// CHECK-NEXT:        "col": 11,1385// CHECK-NEXT:        "tokLen": 11386// CHECK-NEXT:       }1387// CHECK-NEXT:      },1388// CHECK-NEXT:      "name": "R",1389// CHECK-NEXT:      "tagUsed": "struct",1390// CHECK-NEXT:      "completeDefinition": true,1391// CHECK-NEXT:      "definitionData": {1392// CHECK-NEXT:       "canConstDefaultInit": true,1393// CHECK-NEXT:       "copyAssign": {1394// CHECK-NEXT:        "hasConstParam": true,1395// CHECK-NEXT:        "implicitHasConstParam": true,1396// CHECK-NEXT:        "needsImplicit": true,1397// CHECK-NEXT:        "simple": true,1398// CHECK-NEXT:        "trivial": true1399// CHECK-NEXT:       },1400// CHECK-NEXT:       "copyCtor": {1401// CHECK-NEXT:        "hasConstParam": true,1402// CHECK-NEXT:        "implicitHasConstParam": true,1403// CHECK-NEXT:        "needsImplicit": true,1404// CHECK-NEXT:        "simple": true,1405// CHECK-NEXT:        "trivial": true1406// CHECK-NEXT:       },1407// CHECK-NEXT:       "defaultCtor": {1408// CHECK-NEXT:        "defaultedIsConstexpr": true,1409// CHECK-NEXT:        "exists": true,1410// CHECK-NEXT:        "isConstexpr": true,1411// CHECK-NEXT:        "needsImplicit": true,1412// CHECK-NEXT:        "trivial": true1413// CHECK-NEXT:       },1414// CHECK-NEXT:       "dtor": {1415// CHECK-NEXT:        "irrelevant": true,1416// CHECK-NEXT:        "needsImplicit": true,1417// CHECK-NEXT:        "simple": true,1418// CHECK-NEXT:        "trivial": true1419// CHECK-NEXT:       },1420// CHECK-NEXT:       "hasConstexprNonCopyMoveConstructor": true,1421// CHECK-NEXT:       "isAggregate": true,1422// CHECK-NEXT:       "isEmpty": true,1423// CHECK-NEXT:       "isLiteral": true,1424// CHECK-NEXT:       "isPOD": true,1425// CHECK-NEXT:       "isStandardLayout": true,1426// CHECK-NEXT:       "isTrivial": true,1427// CHECK-NEXT:       "isTriviallyCopyable": true,1428// CHECK-NEXT:       "moveAssign": {1429// CHECK-NEXT:        "exists": true,1430// CHECK-NEXT:        "needsImplicit": true,1431// CHECK-NEXT:        "simple": true,1432// CHECK-NEXT:        "trivial": true1433// CHECK-NEXT:       },1434// CHECK-NEXT:       "moveCtor": {1435// CHECK-NEXT:        "exists": true,1436// CHECK-NEXT:        "needsImplicit": true,1437// CHECK-NEXT:        "simple": true,1438// CHECK-NEXT:        "trivial": true1439// CHECK-NEXT:       }1440// CHECK-NEXT:      },1441// CHECK-NEXT:      "inner": [1442// CHECK-NEXT:       {1443// CHECK-NEXT:        "id": "0x{{.*}}",1444// CHECK-NEXT:        "kind": "CXXRecordDecl",1445// CHECK-NEXT:        "loc": {1446// CHECK-NEXT:         "offset": {{[0-9]+}},1447// CHECK-NEXT:         "col": 8,1448// CHECK-NEXT:         "tokLen": 11449// CHECK-NEXT:        },1450// CHECK-NEXT:        "range": {1451// CHECK-NEXT:         "begin": {1452// CHECK-NEXT:          "offset": {{[0-9]+}},1453// CHECK-NEXT:          "col": 1,1454// CHECK-NEXT:          "tokLen": 61455// CHECK-NEXT:         },1456// CHECK-NEXT:         "end": {1457// CHECK-NEXT:          "offset": {{[0-9]+}},1458// CHECK-NEXT:          "col": 8,1459// CHECK-NEXT:          "tokLen": 11460// CHECK-NEXT:         }1461// CHECK-NEXT:        },1462// CHECK-NEXT:        "isImplicit": true,1463// CHECK-NEXT:        "name": "R",1464// CHECK-NEXT:        "tagUsed": "struct"1465// CHECK-NEXT:       }1466// CHECK-NEXT:      ]1467// CHECK-NEXT:     },1468// CHECK-NEXT:     {1469// CHECK-NEXT:      "id": "0x{{.*}}",1470// CHECK-NEXT:      "kind": "ClassTemplateSpecializationDecl",1471// CHECK-NEXT:      "name": "R"1472// CHECK-NEXT:     }1473// CHECK-NEXT:    ]1474// CHECK-NEXT:   },1475// CHECK-NEXT:   {1476// CHECK-NEXT:    "id": "0x{{.*}}",1477// CHECK-NEXT:    "kind": "ClassTemplateSpecializationDecl",1478// CHECK-NEXT:    "loc": {1479// CHECK-NEXT:     "offset": {{[0-9]+}},1480// CHECK-NEXT:     "line": 34,1481// CHECK-NEXT:     "col": 8,1482// CHECK-NEXT:     "tokLen": 11483// CHECK-NEXT:    },1484// CHECK-NEXT:    "range": {1485// CHECK-NEXT:     "begin": {1486// CHECK-NEXT:      "offset": {{[0-9]+}},1487// CHECK-NEXT:      "line": 33,1488// CHECK-NEXT:      "col": 1,1489// CHECK-NEXT:      "tokLen": 81490// CHECK-NEXT:     },1491// CHECK-NEXT:     "end": {1492// CHECK-NEXT:      "offset": {{[0-9]+}},1493// CHECK-NEXT:      "line": 34,1494// CHECK-NEXT:      "col": 16,1495// CHECK-NEXT:      "tokLen": 11496// CHECK-NEXT:     }1497// CHECK-NEXT:    },1498// CHECK-NEXT:    "name": "R",1499// CHECK-NEXT:    "tagUsed": "struct",1500// CHECK-NEXT:    "completeDefinition": true,1501// CHECK-NEXT:    "definitionData": {1502// CHECK-NEXT:     "canConstDefaultInit": true,1503// CHECK-NEXT:     "canPassInRegisters": true,1504// CHECK-NEXT:     "copyAssign": {1505// CHECK-NEXT:      "hasConstParam": true,1506// CHECK-NEXT:      "implicitHasConstParam": true,1507// CHECK-NEXT:      "needsImplicit": true,1508// CHECK-NEXT:      "simple": true,1509// CHECK-NEXT:      "trivial": true1510// CHECK-NEXT:     },1511// CHECK-NEXT:     "copyCtor": {1512// CHECK-NEXT:      "hasConstParam": true,1513// CHECK-NEXT:      "implicitHasConstParam": true,1514// CHECK-NEXT:      "needsImplicit": true,1515// CHECK-NEXT:      "simple": true,1516// CHECK-NEXT:      "trivial": true1517// CHECK-NEXT:     },1518// CHECK-NEXT:     "defaultCtor": {1519// CHECK-NEXT:      "defaultedIsConstexpr": true,1520// CHECK-NEXT:      "exists": true,1521// CHECK-NEXT:      "isConstexpr": true,1522// CHECK-NEXT:      "needsImplicit": true,1523// CHECK-NEXT:      "trivial": true1524// CHECK-NEXT:     },1525// CHECK-NEXT:     "dtor": {1526// CHECK-NEXT:      "irrelevant": true,1527// CHECK-NEXT:      "needsImplicit": true,1528// CHECK-NEXT:      "simple": true,1529// CHECK-NEXT:      "trivial": true1530// CHECK-NEXT:     },1531// CHECK-NEXT:     "hasConstexprNonCopyMoveConstructor": true,1532// CHECK-NEXT:     "isAggregate": true,1533// CHECK-NEXT:     "isEmpty": true,1534// CHECK-NEXT:     "isLiteral": true,1535// CHECK-NEXT:     "isPOD": true,1536// CHECK-NEXT:     "isStandardLayout": true,1537// CHECK-NEXT:     "isTrivial": true,1538// CHECK-NEXT:     "isTriviallyCopyable": true,1539// CHECK-NEXT:     "moveAssign": {1540// CHECK-NEXT:      "exists": true,1541// CHECK-NEXT:      "needsImplicit": true,1542// CHECK-NEXT:      "simple": true,1543// CHECK-NEXT:      "trivial": true1544// CHECK-NEXT:     },1545// CHECK-NEXT:     "moveCtor": {1546// CHECK-NEXT:      "exists": true,1547// CHECK-NEXT:      "needsImplicit": true,1548// CHECK-NEXT:      "simple": true,1549// CHECK-NEXT:      "trivial": true1550// CHECK-NEXT:     }1551// CHECK-NEXT:    },1552// CHECK-NEXT:    "inner": [1553// CHECK-NEXT:     {1554// CHECK-NEXT:      "kind": "TemplateArgument",1555// CHECK-NEXT:      "type": {1556// CHECK-NEXT:       "qualType": "int"1557// CHECK-NEXT:      },1558// CHECK-NEXT:      "inner": [1559// CHECK-NEXT:       {1560// CHECK-NEXT:        "id": "0x{{.*}}",1561// CHECK-NEXT:        "kind": "BuiltinType",1562// CHECK-NEXT:        "type": {1563// CHECK-NEXT:         "qualType": "int"1564// CHECK-NEXT:        }1565// CHECK-NEXT:       }1566// CHECK-NEXT:      ]1567// CHECK-NEXT:     },1568// CHECK-NEXT:     {1569// CHECK-NEXT:      "id": "0x{{.*}}",1570// CHECK-NEXT:      "kind": "CXXRecordDecl",1571// CHECK-NEXT:      "loc": {1572// CHECK-NEXT:       "offset": {{[0-9]+}},1573// CHECK-NEXT:       "col": 8,1574// CHECK-NEXT:       "tokLen": 11575// CHECK-NEXT:      },1576// CHECK-NEXT:      "range": {1577// CHECK-NEXT:       "begin": {1578// CHECK-NEXT:        "offset": {{[0-9]+}},1579// CHECK-NEXT:        "col": 1,1580// CHECK-NEXT:        "tokLen": 61581// CHECK-NEXT:       },1582// CHECK-NEXT:       "end": {1583// CHECK-NEXT:        "offset": {{[0-9]+}},1584// CHECK-NEXT:        "col": 8,1585// CHECK-NEXT:        "tokLen": 11586// CHECK-NEXT:       }1587// CHECK-NEXT:      },1588// CHECK-NEXT:      "isImplicit": true,1589// CHECK-NEXT:      "name": "R",1590// CHECK-NEXT:      "tagUsed": "struct"1591// CHECK-NEXT:     }1592// CHECK-NEXT:    ]1593// CHECK-NEXT:   },1594// CHECK-NEXT:   {1595// CHECK-NEXT:    "id": "0x{{.*}}",1596// CHECK-NEXT:    "kind": "ClassTemplateDecl",1597// CHECK-NEXT:    "loc": {1598// CHECK-NEXT:     "offset": {{[0-9]+}},1599// CHECK-NEXT:     "line": 37,1600// CHECK-NEXT:     "col": 8,1601// CHECK-NEXT:     "tokLen": 11602// CHECK-NEXT:    },1603// CHECK-NEXT:    "range": {1604// CHECK-NEXT:     "begin": {1605// CHECK-NEXT:      "offset": {{[0-9]+}},1606// CHECK-NEXT:      "line": 36,1607// CHECK-NEXT:      "col": 1,1608// CHECK-NEXT:      "tokLen": 81609// CHECK-NEXT:     },1610// CHECK-NEXT:     "end": {1611// CHECK-NEXT:      "offset": {{[0-9]+}},1612// CHECK-NEXT:      "line": 37,1613// CHECK-NEXT:      "col": 11,1614// CHECK-NEXT:      "tokLen": 11615// CHECK-NEXT:     }1616// CHECK-NEXT:    },1617// CHECK-NEXT:    "name": "S",1618// CHECK-NEXT:    "inner": [1619// CHECK-NEXT:     {1620// CHECK-NEXT:      "id": "0x{{.*}}",1621// CHECK-NEXT:      "kind": "TemplateTypeParmDecl",1622// CHECK-NEXT:      "loc": {1623// CHECK-NEXT:       "offset": {{[0-9]+}},1624// CHECK-NEXT:       "line": 36,1625// CHECK-NEXT:       "col": 20,1626// CHECK-NEXT:       "tokLen": 21627// CHECK-NEXT:      },1628// CHECK-NEXT:      "range": {1629// CHECK-NEXT:       "begin": {1630// CHECK-NEXT:        "offset": {{[0-9]+}},1631// CHECK-NEXT:        "col": 11,1632// CHECK-NEXT:        "tokLen": 81633// CHECK-NEXT:       },1634// CHECK-NEXT:       "end": {1635// CHECK-NEXT:        "offset": {{[0-9]+}},1636// CHECK-NEXT:        "col": 20,1637// CHECK-NEXT:        "tokLen": 21638// CHECK-NEXT:       }1639// CHECK-NEXT:      },1640// CHECK-NEXT:      "name": "Ty",1641// CHECK-NEXT:      "tagUsed": "typename",1642// CHECK-NEXT:      "depth": 0,1643// CHECK-NEXT:      "index": 01644// CHECK-NEXT:     },1645// CHECK-NEXT:     {1646// CHECK-NEXT:      "id": "0x{{.*}}",1647// CHECK-NEXT:      "kind": "TemplateTypeParmDecl",1648// CHECK-NEXT:      "loc": {1649// CHECK-NEXT:       "offset": {{[0-9]+}},1650// CHECK-NEXT:       "col": 30,1651// CHECK-NEXT:       "tokLen": 21652// CHECK-NEXT:      },1653// CHECK-NEXT:      "range": {1654// CHECK-NEXT:       "begin": {1655// CHECK-NEXT:        "offset": {{[0-9]+}},1656// CHECK-NEXT:        "col": 24,1657// CHECK-NEXT:        "tokLen": 51658// CHECK-NEXT:       },1659// CHECK-NEXT:       "end": {1660// CHECK-NEXT:        "offset": {{[0-9]+}},1661// CHECK-NEXT:        "col": 30,1662// CHECK-NEXT:        "tokLen": 21663// CHECK-NEXT:       }1664// CHECK-NEXT:      },1665// CHECK-NEXT:      "name": "Uy",1666// CHECK-NEXT:      "tagUsed": "class",1667// CHECK-NEXT:      "depth": 0,1668// CHECK-NEXT:      "index": 11669// CHECK-NEXT:     },1670// CHECK-NEXT:     {1671// CHECK-NEXT:      "id": "0x{{.*}}",1672// CHECK-NEXT:      "kind": "CXXRecordDecl",1673// CHECK-NEXT:      "loc": {1674// CHECK-NEXT:       "offset": {{[0-9]+}},1675// CHECK-NEXT:       "line": 37,1676// CHECK-NEXT:       "col": 8,1677// CHECK-NEXT:       "tokLen": 11678// CHECK-NEXT:      },1679// CHECK-NEXT:      "range": {1680// CHECK-NEXT:       "begin": {1681// CHECK-NEXT:        "offset": {{[0-9]+}},1682// CHECK-NEXT:        "col": 1,1683// CHECK-NEXT:        "tokLen": 61684// CHECK-NEXT:       },1685// CHECK-NEXT:       "end": {1686// CHECK-NEXT:        "offset": {{[0-9]+}},1687// CHECK-NEXT:        "col": 11,1688// CHECK-NEXT:        "tokLen": 11689// CHECK-NEXT:       }1690// CHECK-NEXT:      },1691// CHECK-NEXT:      "name": "S",1692// CHECK-NEXT:      "tagUsed": "struct",1693// CHECK-NEXT:      "completeDefinition": true,1694// CHECK-NEXT:      "definitionData": {1695// CHECK-NEXT:       "canConstDefaultInit": true,1696// CHECK-NEXT:       "copyAssign": {1697// CHECK-NEXT:        "hasConstParam": true,1698// CHECK-NEXT:        "implicitHasConstParam": true,1699// CHECK-NEXT:        "needsImplicit": true,1700// CHECK-NEXT:        "simple": true,1701// CHECK-NEXT:        "trivial": true1702// CHECK-NEXT:       },1703// CHECK-NEXT:       "copyCtor": {1704// CHECK-NEXT:        "hasConstParam": true,1705// CHECK-NEXT:        "implicitHasConstParam": true,1706// CHECK-NEXT:        "needsImplicit": true,1707// CHECK-NEXT:        "simple": true,1708// CHECK-NEXT:        "trivial": true1709// CHECK-NEXT:       },1710// CHECK-NEXT:       "defaultCtor": {1711// CHECK-NEXT:        "defaultedIsConstexpr": true,1712// CHECK-NEXT:        "exists": true,1713// CHECK-NEXT:        "isConstexpr": true,1714// CHECK-NEXT:        "needsImplicit": true,1715// CHECK-NEXT:        "trivial": true1716// CHECK-NEXT:       },1717// CHECK-NEXT:       "dtor": {1718// CHECK-NEXT:        "irrelevant": true,1719// CHECK-NEXT:        "needsImplicit": true,1720// CHECK-NEXT:        "simple": true,1721// CHECK-NEXT:        "trivial": true1722// CHECK-NEXT:       },1723// CHECK-NEXT:       "hasConstexprNonCopyMoveConstructor": true,1724// CHECK-NEXT:       "isAggregate": true,1725// CHECK-NEXT:       "isEmpty": true,1726// CHECK-NEXT:       "isLiteral": true,1727// CHECK-NEXT:       "isPOD": true,1728// CHECK-NEXT:       "isStandardLayout": true,1729// CHECK-NEXT:       "isTrivial": true,1730// CHECK-NEXT:       "isTriviallyCopyable": true,1731// CHECK-NEXT:       "moveAssign": {1732// CHECK-NEXT:        "exists": true,1733// CHECK-NEXT:        "needsImplicit": true,1734// CHECK-NEXT:        "simple": true,1735// CHECK-NEXT:        "trivial": true1736// CHECK-NEXT:       },1737// CHECK-NEXT:       "moveCtor": {1738// CHECK-NEXT:        "exists": true,1739// CHECK-NEXT:        "needsImplicit": true,1740// CHECK-NEXT:        "simple": true,1741// CHECK-NEXT:        "trivial": true1742// CHECK-NEXT:       }1743// CHECK-NEXT:      },1744// CHECK-NEXT:      "inner": [1745// CHECK-NEXT:       {1746// CHECK-NEXT:        "id": "0x{{.*}}",1747// CHECK-NEXT:        "kind": "CXXRecordDecl",1748// CHECK-NEXT:        "loc": {1749// CHECK-NEXT:         "offset": {{[0-9]+}},1750// CHECK-NEXT:         "col": 8,1751// CHECK-NEXT:         "tokLen": 11752// CHECK-NEXT:        },1753// CHECK-NEXT:        "range": {1754// CHECK-NEXT:         "begin": {1755// CHECK-NEXT:          "offset": {{[0-9]+}},1756// CHECK-NEXT:          "col": 1,1757// CHECK-NEXT:          "tokLen": 61758// CHECK-NEXT:         },1759// CHECK-NEXT:         "end": {1760// CHECK-NEXT:          "offset": {{[0-9]+}},1761// CHECK-NEXT:          "col": 8,1762// CHECK-NEXT:          "tokLen": 11763// CHECK-NEXT:         }1764// CHECK-NEXT:        },1765// CHECK-NEXT:        "isImplicit": true,1766// CHECK-NEXT:        "name": "S",1767// CHECK-NEXT:        "tagUsed": "struct"1768// CHECK-NEXT:       }1769// CHECK-NEXT:      ]1770// CHECK-NEXT:     }1771// CHECK-NEXT:    ]1772// CHECK-NEXT:   },1773// CHECK-NEXT:   {1774// CHECK-NEXT:    "id": "0x{{.*}}",1775// CHECK-NEXT:    "kind": "ClassTemplatePartialSpecializationDecl",1776// CHECK-NEXT:    "loc": {1777// CHECK-NEXT:     "offset": {{[0-9]+}},1778// CHECK-NEXT:     "line": 40,1779// CHECK-NEXT:     "col": 8,1780// CHECK-NEXT:     "tokLen": 11781// CHECK-NEXT:    },1782// CHECK-NEXT:    "range": {1783// CHECK-NEXT:     "begin": {1784// CHECK-NEXT:      "offset": {{[0-9]+}},1785// CHECK-NEXT:      "line": 39,1786// CHECK-NEXT:      "col": 1,1787// CHECK-NEXT:      "tokLen": 81788// CHECK-NEXT:     },1789// CHECK-NEXT:     "end": {1790// CHECK-NEXT:      "offset": {{[0-9]+}},1791// CHECK-NEXT:      "line": 40,1792// CHECK-NEXT:      "col": 20,1793// CHECK-NEXT:      "tokLen": 11794// CHECK-NEXT:     }1795// CHECK-NEXT:    },1796// CHECK-NEXT:    "name": "S",1797// CHECK-NEXT:    "tagUsed": "struct",1798// CHECK-NEXT:    "completeDefinition": true,1799// CHECK-NEXT:    "definitionData": {1800// CHECK-NEXT:     "canConstDefaultInit": true,1801// CHECK-NEXT:     "copyAssign": {1802// CHECK-NEXT:      "hasConstParam": true,1803// CHECK-NEXT:      "implicitHasConstParam": true,1804// CHECK-NEXT:      "needsImplicit": true,1805// CHECK-NEXT:      "simple": true,1806// CHECK-NEXT:      "trivial": true1807// CHECK-NEXT:     },1808// CHECK-NEXT:     "copyCtor": {1809// CHECK-NEXT:      "hasConstParam": true,1810// CHECK-NEXT:      "implicitHasConstParam": true,1811// CHECK-NEXT:      "needsImplicit": true,1812// CHECK-NEXT:      "simple": true,1813// CHECK-NEXT:      "trivial": true1814// CHECK-NEXT:     },1815// CHECK-NEXT:     "defaultCtor": {1816// CHECK-NEXT:      "defaultedIsConstexpr": true,1817// CHECK-NEXT:      "exists": true,1818// CHECK-NEXT:      "isConstexpr": true,1819// CHECK-NEXT:      "needsImplicit": true,1820// CHECK-NEXT:      "trivial": true1821// CHECK-NEXT:     },1822// CHECK-NEXT:     "dtor": {1823// CHECK-NEXT:      "irrelevant": true,1824// CHECK-NEXT:      "needsImplicit": true,1825// CHECK-NEXT:      "simple": true,1826// CHECK-NEXT:      "trivial": true1827// CHECK-NEXT:     },1828// CHECK-NEXT:     "hasConstexprNonCopyMoveConstructor": true,1829// CHECK-NEXT:     "isAggregate": true,1830// CHECK-NEXT:     "isEmpty": true,1831// CHECK-NEXT:     "isLiteral": true,1832// CHECK-NEXT:     "isPOD": true,1833// CHECK-NEXT:     "isStandardLayout": true,1834// CHECK-NEXT:     "isTrivial": true,1835// CHECK-NEXT:     "isTriviallyCopyable": true,1836// CHECK-NEXT:     "moveAssign": {1837// CHECK-NEXT:      "exists": true,1838// CHECK-NEXT:      "needsImplicit": true,1839// CHECK-NEXT:      "simple": true,1840// CHECK-NEXT:      "trivial": true1841// CHECK-NEXT:     },1842// CHECK-NEXT:     "moveCtor": {1843// CHECK-NEXT:      "exists": true,1844// CHECK-NEXT:      "needsImplicit": true,1845// CHECK-NEXT:      "simple": true,1846// CHECK-NEXT:      "trivial": true1847// CHECK-NEXT:     }1848// CHECK-NEXT:    },1849// CHECK-NEXT:    "inner": [1850// CHECK-NEXT:     {1851// CHECK-NEXT:      "kind": "TemplateArgument",1852// CHECK-NEXT:      "type": {1853// CHECK-NEXT:       "qualType": "type-parameter-0-0"1854// CHECK-NEXT:      },1855// CHECK-NEXT:      "inner": [1856// CHECK-NEXT:       {1857// CHECK-NEXT:        "id": "0x{{.*}}",1858// CHECK-NEXT:        "kind": "TemplateTypeParmType",1859// CHECK-NEXT:        "type": {1860// CHECK-NEXT:         "qualType": "type-parameter-0-0"1861// CHECK-NEXT:        },1862// CHECK-NEXT:        "isDependent": true,1863// CHECK-NEXT:        "isInstantiationDependent": true,1864// CHECK-NEXT:        "depth": 0,1865// CHECK-NEXT:        "index": 0,1866// CHECK-NEXT:        "decl": {1867// CHECK-NEXT:         "id": "0x0"1868// CHECK-NEXT:        }1869// CHECK-NEXT:       }1870// CHECK-NEXT:      ]1871// CHECK-NEXT:     },1872// CHECK-NEXT:     {1873// CHECK-NEXT:      "kind": "TemplateArgument",1874// CHECK-NEXT:      "type": {1875// CHECK-NEXT:       "qualType": "int"1876// CHECK-NEXT:      },1877// CHECK-NEXT:      "inner": [1878// CHECK-NEXT:       {1879// CHECK-NEXT:        "id": "0x{{.*}}",1880// CHECK-NEXT:        "kind": "BuiltinType",1881// CHECK-NEXT:        "type": {1882// CHECK-NEXT:         "qualType": "int"1883// CHECK-NEXT:        }1884// CHECK-NEXT:       }1885// CHECK-NEXT:      ]1886// CHECK-NEXT:     },1887// CHECK-NEXT:     {1888// CHECK-NEXT:      "id": "0x{{.*}}",1889// CHECK-NEXT:      "kind": "TemplateTypeParmDecl",1890// CHECK-NEXT:      "loc": {1891// CHECK-NEXT:       "offset": {{[0-9]+}},1892// CHECK-NEXT:       "line": 39,1893// CHECK-NEXT:       "col": 20,1894// CHECK-NEXT:       "tokLen": 21895// CHECK-NEXT:      },1896// CHECK-NEXT:      "range": {1897// CHECK-NEXT:       "begin": {1898// CHECK-NEXT:        "offset": {{[0-9]+}},1899// CHECK-NEXT:        "col": 11,1900// CHECK-NEXT:        "tokLen": 81901// CHECK-NEXT:       },1902// CHECK-NEXT:       "end": {1903// CHECK-NEXT:        "offset": {{[0-9]+}},1904// CHECK-NEXT:        "col": 20,1905// CHECK-NEXT:        "tokLen": 21906// CHECK-NEXT:       }1907// CHECK-NEXT:      },1908// CHECK-NEXT:      "isReferenced": true,1909// CHECK-NEXT:      "name": "Ty",1910// CHECK-NEXT:      "tagUsed": "typename",1911// CHECK-NEXT:      "depth": 0,1912// CHECK-NEXT:      "index": 01913// CHECK-NEXT:     },1914// CHECK-NEXT:     {1915// CHECK-NEXT:      "id": "0x{{.*}}",1916// CHECK-NEXT:      "kind": "CXXRecordDecl",1917// CHECK-NEXT:      "loc": {1918// CHECK-NEXT:       "offset": {{[0-9]+}},1919// CHECK-NEXT:       "line": 40,1920// CHECK-NEXT:       "col": 8,1921// CHECK-NEXT:       "tokLen": 11922// CHECK-NEXT:      },1923// CHECK-NEXT:      "range": {1924// CHECK-NEXT:       "begin": {1925// CHECK-NEXT:        "offset": {{[0-9]+}},1926// CHECK-NEXT:        "col": 1,1927// CHECK-NEXT:        "tokLen": 61928// CHECK-NEXT:       },1929// CHECK-NEXT:       "end": {1930// CHECK-NEXT:        "offset": {{[0-9]+}},1931// CHECK-NEXT:        "col": 8,1932// CHECK-NEXT:        "tokLen": 11933// CHECK-NEXT:       }1934// CHECK-NEXT:      },1935// CHECK-NEXT:      "isImplicit": true,1936// CHECK-NEXT:      "name": "S",1937// CHECK-NEXT:      "tagUsed": "struct"1938// CHECK-NEXT:     }1939// CHECK-NEXT:    ]1940// CHECK-NEXT:   },1941// CHECK-NEXT:   {1942// CHECK-NEXT:    "id": "0x{{.*}}",1943// CHECK-NEXT:    "kind": "ClassTemplateDecl",1944// CHECK-NEXT:    "loc": {1945// CHECK-NEXT:     "offset": {{[0-9]+}},1946// CHECK-NEXT:     "line": 43,1947// CHECK-NEXT:     "col": 8,1948// CHECK-NEXT:     "tokLen": 11949// CHECK-NEXT:    },1950// CHECK-NEXT:    "range": {1951// CHECK-NEXT:     "begin": {1952// CHECK-NEXT:      "offset": {{[0-9]+}},1953// CHECK-NEXT:      "line": 42,1954// CHECK-NEXT:      "col": 1,1955// CHECK-NEXT:      "tokLen": 81956// CHECK-NEXT:     },1957// CHECK-NEXT:     "end": {1958// CHECK-NEXT:      "offset": {{[0-9]+}},1959// CHECK-NEXT:      "line": 43,1960// CHECK-NEXT:      "col": 11,1961// CHECK-NEXT:      "tokLen": 11962// CHECK-NEXT:     }1963// CHECK-NEXT:    },1964// CHECK-NEXT:    "name": "T",1965// CHECK-NEXT:    "inner": [1966// CHECK-NEXT:     {1967// CHECK-NEXT:      "id": "0x{{.*}}",1968// CHECK-NEXT:      "kind": "NonTypeTemplateParmDecl",1969// CHECK-NEXT:      "loc": {1970// CHECK-NEXT:       "offset": {{[0-9]+}},1971// CHECK-NEXT:       "line": 42,1972// CHECK-NEXT:       "col": 15,1973// CHECK-NEXT:       "tokLen": 11974// CHECK-NEXT:      },1975// CHECK-NEXT:      "range": {1976// CHECK-NEXT:       "begin": {1977// CHECK-NEXT:        "offset": {{[0-9]+}},1978// CHECK-NEXT:        "col": 11,1979// CHECK-NEXT:        "tokLen": 41980// CHECK-NEXT:       },1981// CHECK-NEXT:       "end": {1982// CHECK-NEXT:        "offset": {{[0-9]+}},1983// CHECK-NEXT:        "col": 11,1984// CHECK-NEXT:        "tokLen": 41985// CHECK-NEXT:       }1986// CHECK-NEXT:      },1987// CHECK-NEXT:      "type": {1988// CHECK-NEXT:       "qualType": "auto"1989// CHECK-NEXT:      },1990// CHECK-NEXT:      "depth": 0,1991// CHECK-NEXT:      "index": 01992// CHECK-NEXT:     },1993// CHECK-NEXT:     {1994// CHECK-NEXT:      "id": "0x{{.*}}",1995// CHECK-NEXT:      "kind": "CXXRecordDecl",1996// CHECK-NEXT:      "loc": {1997// CHECK-NEXT:       "offset": {{[0-9]+}},1998// CHECK-NEXT:       "line": 43,1999// CHECK-NEXT:       "col": 8,2000// CHECK-NEXT:       "tokLen": 12001// CHECK-NEXT:      },2002// CHECK-NEXT:      "range": {2003// CHECK-NEXT:       "begin": {2004// CHECK-NEXT:        "offset": {{[0-9]+}},2005// CHECK-NEXT:        "col": 1,2006// CHECK-NEXT:        "tokLen": 62007// CHECK-NEXT:       },2008// CHECK-NEXT:       "end": {2009// CHECK-NEXT:        "offset": {{[0-9]+}},2010// CHECK-NEXT:        "col": 11,2011// CHECK-NEXT:        "tokLen": 12012// CHECK-NEXT:       }2013// CHECK-NEXT:      },2014// CHECK-NEXT:      "name": "T",2015// CHECK-NEXT:      "tagUsed": "struct",2016// CHECK-NEXT:      "completeDefinition": true,2017// CHECK-NEXT:      "definitionData": {2018// CHECK-NEXT:       "canConstDefaultInit": true,2019// CHECK-NEXT:       "copyAssign": {2020// CHECK-NEXT:        "hasConstParam": true,2021// CHECK-NEXT:        "implicitHasConstParam": true,2022// CHECK-NEXT:        "needsImplicit": true,2023// CHECK-NEXT:        "simple": true,2024// CHECK-NEXT:        "trivial": true2025// CHECK-NEXT:       },2026// CHECK-NEXT:       "copyCtor": {2027// CHECK-NEXT:        "hasConstParam": true,2028// CHECK-NEXT:        "implicitHasConstParam": true,2029// CHECK-NEXT:        "needsImplicit": true,2030// CHECK-NEXT:        "simple": true,2031// CHECK-NEXT:        "trivial": true2032// CHECK-NEXT:       },2033// CHECK-NEXT:       "defaultCtor": {2034// CHECK-NEXT:        "defaultedIsConstexpr": true,2035// CHECK-NEXT:        "exists": true,2036// CHECK-NEXT:        "isConstexpr": true,2037// CHECK-NEXT:        "needsImplicit": true,2038// CHECK-NEXT:        "trivial": true2039// CHECK-NEXT:       },2040// CHECK-NEXT:       "dtor": {2041// CHECK-NEXT:        "irrelevant": true,2042// CHECK-NEXT:        "needsImplicit": true,2043// CHECK-NEXT:        "simple": true,2044// CHECK-NEXT:        "trivial": true2045// CHECK-NEXT:       },2046// CHECK-NEXT:       "hasConstexprNonCopyMoveConstructor": true,2047// CHECK-NEXT:       "isAggregate": true,2048// CHECK-NEXT:       "isEmpty": true,2049// CHECK-NEXT:       "isLiteral": true,2050// CHECK-NEXT:       "isPOD": true,2051// CHECK-NEXT:       "isStandardLayout": true,2052// CHECK-NEXT:       "isTrivial": true,2053// CHECK-NEXT:       "isTriviallyCopyable": true,2054// CHECK-NEXT:       "moveAssign": {2055// CHECK-NEXT:        "exists": true,2056// CHECK-NEXT:        "needsImplicit": true,2057// CHECK-NEXT:        "simple": true,2058// CHECK-NEXT:        "trivial": true2059// CHECK-NEXT:       },2060// CHECK-NEXT:       "moveCtor": {2061// CHECK-NEXT:        "exists": true,2062// CHECK-NEXT:        "needsImplicit": true,2063// CHECK-NEXT:        "simple": true,2064// CHECK-NEXT:        "trivial": true2065// CHECK-NEXT:       }2066// CHECK-NEXT:      },2067// CHECK-NEXT:      "inner": [2068// CHECK-NEXT:       {2069// CHECK-NEXT:        "id": "0x{{.*}}",2070// CHECK-NEXT:        "kind": "CXXRecordDecl",2071// CHECK-NEXT:        "loc": {2072// CHECK-NEXT:         "offset": {{[0-9]+}},2073// CHECK-NEXT:         "col": 8,2074// CHECK-NEXT:         "tokLen": 12075// CHECK-NEXT:        },2076// CHECK-NEXT:        "range": {2077// CHECK-NEXT:         "begin": {2078// CHECK-NEXT:          "offset": {{[0-9]+}},2079// CHECK-NEXT:          "col": 1,2080// CHECK-NEXT:          "tokLen": 62081// CHECK-NEXT:         },2082// CHECK-NEXT:         "end": {2083// CHECK-NEXT:          "offset": {{[0-9]+}},2084// CHECK-NEXT:          "col": 8,2085// CHECK-NEXT:          "tokLen": 12086// CHECK-NEXT:         }2087// CHECK-NEXT:        },2088// CHECK-NEXT:        "isImplicit": true,2089// CHECK-NEXT:        "name": "T",2090// CHECK-NEXT:        "tagUsed": "struct"2091// CHECK-NEXT:       }2092// CHECK-NEXT:      ]2093// CHECK-NEXT:     }2094// CHECK-NEXT:    ]2095// CHECK-NEXT:   },2096// CHECK-NEXT:   {2097// CHECK-NEXT:    "id": "0x{{.*}}",2098// CHECK-NEXT:    "kind": "ClassTemplateDecl",2099// CHECK-NEXT:    "loc": {2100// CHECK-NEXT:     "offset": {{[0-9]+}},2101// CHECK-NEXT:     "line": 46,2102// CHECK-NEXT:     "col": 8,2103// CHECK-NEXT:     "tokLen": 12104// CHECK-NEXT:    },2105// CHECK-NEXT:    "range": {2106// CHECK-NEXT:     "begin": {2107// CHECK-NEXT:      "offset": {{[0-9]+}},2108// CHECK-NEXT:      "line": 45,2109// CHECK-NEXT:      "col": 1,2110// CHECK-NEXT:      "tokLen": 82111// CHECK-NEXT:     },2112// CHECK-NEXT:     "end": {2113// CHECK-NEXT:      "offset": {{[0-9]+}},2114// CHECK-NEXT:      "line": 46,2115// CHECK-NEXT:      "col": 11,2116// CHECK-NEXT:      "tokLen": 12117// CHECK-NEXT:     }2118// CHECK-NEXT:    },2119// CHECK-NEXT:    "name": "U",2120// CHECK-NEXT:    "inner": [2121// CHECK-NEXT:     {2122// CHECK-NEXT:      "id": "0x{{.*}}",2123// CHECK-NEXT:      "kind": "NonTypeTemplateParmDecl",2124// CHECK-NEXT:      "loc": {2125// CHECK-NEXT:       "offset": {{[0-9]+}},2126// CHECK-NEXT:       "line": 45,2127// CHECK-NEXT:       "col": 25,2128// CHECK-NEXT:       "tokLen": 12129// CHECK-NEXT:      },2130// CHECK-NEXT:      "range": {2131// CHECK-NEXT:       "begin": {2132// CHECK-NEXT:        "offset": {{[0-9]+}},2133// CHECK-NEXT:        "col": 11,2134// CHECK-NEXT:        "tokLen": 82135// CHECK-NEXT:       },2136// CHECK-NEXT:       "end": {2137// CHECK-NEXT:        "offset": {{[0-9]+}},2138// CHECK-NEXT:        "col": 24,2139// CHECK-NEXT:        "tokLen": 12140// CHECK-NEXT:       }2141// CHECK-NEXT:      },2142// CHECK-NEXT:      "type": {2143// CHECK-NEXT:       "qualType": "decltype(auto)"2144// CHECK-NEXT:      },2145// CHECK-NEXT:      "depth": 0,2146// CHECK-NEXT:      "index": 02147// CHECK-NEXT:     },2148// CHECK-NEXT:     {2149// CHECK-NEXT:      "id": "0x{{.*}}",2150// CHECK-NEXT:      "kind": "CXXRecordDecl",2151// CHECK-NEXT:      "loc": {2152// CHECK-NEXT:       "offset": {{[0-9]+}},2153// CHECK-NEXT:       "line": 46,2154// CHECK-NEXT:       "col": 8,2155// CHECK-NEXT:       "tokLen": 12156// CHECK-NEXT:      },2157// CHECK-NEXT:      "range": {2158// CHECK-NEXT:       "begin": {2159// CHECK-NEXT:        "offset": {{[0-9]+}},2160// CHECK-NEXT:        "col": 1,2161// CHECK-NEXT:        "tokLen": 62162// CHECK-NEXT:       },2163// CHECK-NEXT:       "end": {2164// CHECK-NEXT:        "offset": {{[0-9]+}},2165// CHECK-NEXT:        "col": 11,2166// CHECK-NEXT:        "tokLen": 12167// CHECK-NEXT:       }2168// CHECK-NEXT:      },2169// CHECK-NEXT:      "name": "U",2170// CHECK-NEXT:      "tagUsed": "struct",2171// CHECK-NEXT:      "completeDefinition": true,2172// CHECK-NEXT:      "definitionData": {2173// CHECK-NEXT:       "canConstDefaultInit": true,2174// CHECK-NEXT:       "copyAssign": {2175// CHECK-NEXT:        "hasConstParam": true,2176// CHECK-NEXT:        "implicitHasConstParam": true,2177// CHECK-NEXT:        "needsImplicit": true,2178// CHECK-NEXT:        "simple": true,2179// CHECK-NEXT:        "trivial": true2180// CHECK-NEXT:       },2181// CHECK-NEXT:       "copyCtor": {2182// CHECK-NEXT:        "hasConstParam": true,2183// CHECK-NEXT:        "implicitHasConstParam": true,2184// CHECK-NEXT:        "needsImplicit": true,2185// CHECK-NEXT:        "simple": true,2186// CHECK-NEXT:        "trivial": true2187// CHECK-NEXT:       },2188// CHECK-NEXT:       "defaultCtor": {2189// CHECK-NEXT:        "defaultedIsConstexpr": true,2190// CHECK-NEXT:        "exists": true,2191// CHECK-NEXT:        "isConstexpr": true,2192// CHECK-NEXT:        "needsImplicit": true,2193// CHECK-NEXT:        "trivial": true2194// CHECK-NEXT:       },2195// CHECK-NEXT:       "dtor": {2196// CHECK-NEXT:        "irrelevant": true,2197// CHECK-NEXT:        "needsImplicit": true,2198// CHECK-NEXT:        "simple": true,2199// CHECK-NEXT:        "trivial": true2200// CHECK-NEXT:       },2201// CHECK-NEXT:       "hasConstexprNonCopyMoveConstructor": true,2202// CHECK-NEXT:       "isAggregate": true,2203// CHECK-NEXT:       "isEmpty": true,2204// CHECK-NEXT:       "isLiteral": true,2205// CHECK-NEXT:       "isPOD": true,2206// CHECK-NEXT:       "isStandardLayout": true,2207// CHECK-NEXT:       "isTrivial": true,2208// CHECK-NEXT:       "isTriviallyCopyable": true,2209// CHECK-NEXT:       "moveAssign": {2210// CHECK-NEXT:        "exists": true,2211// CHECK-NEXT:        "needsImplicit": true,2212// CHECK-NEXT:        "simple": true,2213// CHECK-NEXT:        "trivial": true2214// CHECK-NEXT:       },2215// CHECK-NEXT:       "moveCtor": {2216// CHECK-NEXT:        "exists": true,2217// CHECK-NEXT:        "needsImplicit": true,2218// CHECK-NEXT:        "simple": true,2219// CHECK-NEXT:        "trivial": true2220// CHECK-NEXT:       }2221// CHECK-NEXT:      },2222// CHECK-NEXT:      "inner": [2223// CHECK-NEXT:       {2224// CHECK-NEXT:        "id": "0x{{.*}}",2225// CHECK-NEXT:        "kind": "CXXRecordDecl",2226// CHECK-NEXT:        "loc": {2227// CHECK-NEXT:         "offset": {{[0-9]+}},2228// CHECK-NEXT:         "col": 8,2229// CHECK-NEXT:         "tokLen": 12230// CHECK-NEXT:        },2231// CHECK-NEXT:        "range": {2232// CHECK-NEXT:         "begin": {2233// CHECK-NEXT:          "offset": {{[0-9]+}},2234// CHECK-NEXT:          "col": 1,2235// CHECK-NEXT:          "tokLen": 62236// CHECK-NEXT:         },2237// CHECK-NEXT:         "end": {2238// CHECK-NEXT:          "offset": {{[0-9]+}},2239// CHECK-NEXT:          "col": 8,2240// CHECK-NEXT:          "tokLen": 12241// CHECK-NEXT:         }2242// CHECK-NEXT:        },2243// CHECK-NEXT:        "isImplicit": true,2244// CHECK-NEXT:        "name": "U",2245// CHECK-NEXT:        "tagUsed": "struct"2246// CHECK-NEXT:       }2247// CHECK-NEXT:      ]2248// CHECK-NEXT:     }2249// CHECK-NEXT:    ]2250// CHECK-NEXT:   },2251// CHECK-NEXT:   {2252// CHECK-NEXT:    "id": "0x{{.*}}",2253// CHECK-NEXT:    "kind": "ClassTemplateDecl",2254// CHECK-NEXT:    "loc": {2255// CHECK-NEXT:     "offset": {{[0-9]+}},2256// CHECK-NEXT:     "line": 49,2257// CHECK-NEXT:     "col": 8,2258// CHECK-NEXT:     "tokLen": 12259// CHECK-NEXT:    },2260// CHECK-NEXT:    "range": {2261// CHECK-NEXT:     "begin": {2262// CHECK-NEXT:      "offset": {{[0-9]+}},2263// CHECK-NEXT:      "line": 48,2264// CHECK-NEXT:      "col": 1,2265// CHECK-NEXT:      "tokLen": 82266// CHECK-NEXT:     },2267// CHECK-NEXT:     "end": {2268// CHECK-NEXT:      "offset": {{[0-9]+}},2269// CHECK-NEXT:      "line": 52,2270// CHECK-NEXT:      "col": 1,2271// CHECK-NEXT:      "tokLen": 12272// CHECK-NEXT:     }2273// CHECK-NEXT:    },2274// CHECK-NEXT:    "name": "V",2275// CHECK-NEXT:    "inner": [2276// CHECK-NEXT:     {2277// CHECK-NEXT:      "id": "0x{{.*}}",2278// CHECK-NEXT:      "kind": "TemplateTypeParmDecl",2279// CHECK-NEXT:      "loc": {2280// CHECK-NEXT:       "offset": {{[0-9]+}},2281// CHECK-NEXT:       "line": 48,2282// CHECK-NEXT:       "col": 20,2283// CHECK-NEXT:       "tokLen": 22284// CHECK-NEXT:      },2285// CHECK-NEXT:      "range": {2286// CHECK-NEXT:       "begin": {2287// CHECK-NEXT:        "offset": {{[0-9]+}},2288// CHECK-NEXT:        "col": 11,2289// CHECK-NEXT:        "tokLen": 82290// CHECK-NEXT:       },2291// CHECK-NEXT:       "end": {2292// CHECK-NEXT:        "offset": {{[0-9]+}},2293// CHECK-NEXT:        "col": 20,2294// CHECK-NEXT:        "tokLen": 22295// CHECK-NEXT:       }2296// CHECK-NEXT:      },2297// CHECK-NEXT:      "name": "Ty",2298// CHECK-NEXT:      "tagUsed": "typename",2299// CHECK-NEXT:      "depth": 0,2300// CHECK-NEXT:      "index": 02301// CHECK-NEXT:     },2302// CHECK-NEXT:     {2303// CHECK-NEXT:      "id": "0x{{.*}}",2304// CHECK-NEXT:      "kind": "CXXRecordDecl",2305// CHECK-NEXT:      "loc": {2306// CHECK-NEXT:       "offset": {{[0-9]+}},2307// CHECK-NEXT:       "line": 49,2308// CHECK-NEXT:       "col": 8,2309// CHECK-NEXT:       "tokLen": 12310// CHECK-NEXT:      },2311// CHECK-NEXT:      "range": {2312// CHECK-NEXT:       "begin": {2313// CHECK-NEXT:        "offset": {{[0-9]+}},2314// CHECK-NEXT:        "col": 1,2315// CHECK-NEXT:        "tokLen": 62316// CHECK-NEXT:       },2317// CHECK-NEXT:       "end": {2318// CHECK-NEXT:        "offset": {{[0-9]+}},2319// CHECK-NEXT:        "line": 52,2320// CHECK-NEXT:        "col": 1,2321// CHECK-NEXT:        "tokLen": 12322// CHECK-NEXT:       }2323// CHECK-NEXT:      },2324// CHECK-NEXT:      "name": "V",2325// CHECK-NEXT:      "tagUsed": "struct",2326// CHECK-NEXT:      "completeDefinition": true,2327// CHECK-NEXT:      "definitionData": {2328// CHECK-NEXT:       "canConstDefaultInit": true,2329// CHECK-NEXT:       "copyAssign": {2330// CHECK-NEXT:        "hasConstParam": true,2331// CHECK-NEXT:        "implicitHasConstParam": true,2332// CHECK-NEXT:        "needsImplicit": true,2333// CHECK-NEXT:        "simple": true,2334// CHECK-NEXT:        "trivial": true2335// CHECK-NEXT:       },2336// CHECK-NEXT:       "copyCtor": {2337// CHECK-NEXT:        "hasConstParam": true,2338// CHECK-NEXT:        "implicitHasConstParam": true,2339// CHECK-NEXT:        "needsImplicit": true,2340// CHECK-NEXT:        "simple": true,2341// CHECK-NEXT:        "trivial": true2342// CHECK-NEXT:       },2343// CHECK-NEXT:       "defaultCtor": {2344// CHECK-NEXT:        "defaultedIsConstexpr": true,2345// CHECK-NEXT:        "exists": true,2346// CHECK-NEXT:        "isConstexpr": true,2347// CHECK-NEXT:        "needsImplicit": true,2348// CHECK-NEXT:        "trivial": true2349// CHECK-NEXT:       },2350// CHECK-NEXT:       "dtor": {2351// CHECK-NEXT:        "irrelevant": true,2352// CHECK-NEXT:        "needsImplicit": true,2353// CHECK-NEXT:        "simple": true,2354// CHECK-NEXT:        "trivial": true2355// CHECK-NEXT:       },2356// CHECK-NEXT:       "hasConstexprNonCopyMoveConstructor": true,2357// CHECK-NEXT:       "isAggregate": true,2358// CHECK-NEXT:       "isEmpty": true,2359// CHECK-NEXT:       "isLiteral": true,2360// CHECK-NEXT:       "isPOD": true,2361// CHECK-NEXT:       "isStandardLayout": true,2362// CHECK-NEXT:       "isTrivial": true,2363// CHECK-NEXT:       "isTriviallyCopyable": true,2364// CHECK-NEXT:       "moveAssign": {2365// CHECK-NEXT:        "exists": true,2366// CHECK-NEXT:        "needsImplicit": true,2367// CHECK-NEXT:        "simple": true,2368// CHECK-NEXT:        "trivial": true2369// CHECK-NEXT:       },2370// CHECK-NEXT:       "moveCtor": {2371// CHECK-NEXT:        "exists": true,2372// CHECK-NEXT:        "needsImplicit": true,2373// CHECK-NEXT:        "simple": true,2374// CHECK-NEXT:        "trivial": true2375// CHECK-NEXT:       }2376// CHECK-NEXT:      },2377// CHECK-NEXT:      "inner": [2378// CHECK-NEXT:       {2379// CHECK-NEXT:        "id": "0x{{.*}}",2380// CHECK-NEXT:        "kind": "CXXRecordDecl",2381// CHECK-NEXT:        "loc": {2382// CHECK-NEXT:         "offset": {{[0-9]+}},2383// CHECK-NEXT:         "line": 49,2384// CHECK-NEXT:         "col": 8,2385// CHECK-NEXT:         "tokLen": 12386// CHECK-NEXT:        },2387// CHECK-NEXT:        "range": {2388// CHECK-NEXT:         "begin": {2389// CHECK-NEXT:          "offset": {{[0-9]+}},2390// CHECK-NEXT:          "col": 1,2391// CHECK-NEXT:          "tokLen": 62392// CHECK-NEXT:         },2393// CHECK-NEXT:         "end": {2394// CHECK-NEXT:          "offset": {{[0-9]+}},2395// CHECK-NEXT:          "col": 8,2396// CHECK-NEXT:          "tokLen": 12397// CHECK-NEXT:         }2398// CHECK-NEXT:        },2399// CHECK-NEXT:        "isImplicit": true,2400// CHECK-NEXT:        "name": "V",2401// CHECK-NEXT:        "tagUsed": "struct"2402// CHECK-NEXT:       },2403// CHECK-NEXT:       {2404// CHECK-NEXT:        "id": "0x{{.*}}",2405// CHECK-NEXT:        "kind": "FunctionTemplateDecl",2406// CHECK-NEXT:        "loc": {2407// CHECK-NEXT:         "offset": {{[0-9]+}},2408// CHECK-NEXT:         "line": 51,2409// CHECK-NEXT:         "col": 8,2410// CHECK-NEXT:         "tokLen": 12411// CHECK-NEXT:        },2412// CHECK-NEXT:        "range": {2413// CHECK-NEXT:         "begin": {2414// CHECK-NEXT:          "offset": {{[0-9]+}},2415// CHECK-NEXT:          "line": 50,2416// CHECK-NEXT:          "col": 3,2417// CHECK-NEXT:          "tokLen": 82418// CHECK-NEXT:         },2419// CHECK-NEXT:         "end": {2420// CHECK-NEXT:          "offset": {{[0-9]+}},2421// CHECK-NEXT:          "line": 51,2422// CHECK-NEXT:          "col": 10,2423// CHECK-NEXT:          "tokLen": 12424// CHECK-NEXT:         }2425// CHECK-NEXT:        },2426// CHECK-NEXT:        "name": "f",2427// CHECK-NEXT:        "inner": [2428// CHECK-NEXT:         {2429// CHECK-NEXT:          "id": "0x{{.*}}",2430// CHECK-NEXT:          "kind": "TemplateTypeParmDecl",2431// CHECK-NEXT:          "loc": {2432// CHECK-NEXT:           "offset": {{[0-9]+}},2433// CHECK-NEXT:           "line": 50,2434// CHECK-NEXT:           "col": 22,2435// CHECK-NEXT:           "tokLen": 22436// CHECK-NEXT:          },2437// CHECK-NEXT:          "range": {2438// CHECK-NEXT:           "begin": {2439// CHECK-NEXT:            "offset": {{[0-9]+}},2440// CHECK-NEXT:            "col": 13,2441// CHECK-NEXT:            "tokLen": 82442// CHECK-NEXT:           },2443// CHECK-NEXT:           "end": {2444// CHECK-NEXT:            "offset": {{[0-9]+}},2445// CHECK-NEXT:            "col": 22,2446// CHECK-NEXT:            "tokLen": 22447// CHECK-NEXT:           }2448// CHECK-NEXT:          },2449// CHECK-NEXT:          "name": "Uy",2450// CHECK-NEXT:          "tagUsed": "typename",2451// CHECK-NEXT:          "depth": 1,2452// CHECK-NEXT:          "index": 02453// CHECK-NEXT:         },2454// CHECK-NEXT:         {2455// CHECK-NEXT:          "id": "0x{{.*}}",2456// CHECK-NEXT:          "kind": "CXXMethodDecl",2457// CHECK-NEXT:          "loc": {2458// CHECK-NEXT:           "offset": {{[0-9]+}},2459// CHECK-NEXT:           "line": 51,2460// CHECK-NEXT:           "col": 8,2461// CHECK-NEXT:           "tokLen": 12462// CHECK-NEXT:          },2463// CHECK-NEXT:          "range": {2464// CHECK-NEXT:           "begin": {2465// CHECK-NEXT:            "offset": {{[0-9]+}},2466// CHECK-NEXT:            "col": 3,2467// CHECK-NEXT:            "tokLen": 42468// CHECK-NEXT:           },2469// CHECK-NEXT:           "end": {2470// CHECK-NEXT:            "offset": {{[0-9]+}},2471// CHECK-NEXT:            "col": 10,2472// CHECK-NEXT:            "tokLen": 12473// CHECK-NEXT:           }2474// CHECK-NEXT:          },2475// CHECK-NEXT:          "name": "f",2476// CHECK-NEXT:          "type": {2477// CHECK-NEXT:           "qualType": "void ()"2478// CHECK-NEXT:          }2479// CHECK-NEXT:         }2480// CHECK-NEXT:        ]2481// CHECK-NEXT:       }2482// CHECK-NEXT:      ]2483// CHECK-NEXT:     }2484// CHECK-NEXT:    ]2485// CHECK-NEXT:   },2486// CHECK-NEXT:   {2487// CHECK-NEXT:    "id": "0x{{.*}}",2488// CHECK-NEXT:    "kind": "FunctionTemplateDecl",2489// CHECK-NEXT:    "loc": {2490// CHECK-NEXT:     "offset": {{[0-9]+}},2491// CHECK-NEXT:     "line": 56,2492// CHECK-NEXT:     "col": 13,2493// CHECK-NEXT:     "tokLen": 12494// CHECK-NEXT:    },2495// CHECK-NEXT:    "range": {2496// CHECK-NEXT:     "begin": {2497// CHECK-NEXT:      "offset": {{[0-9]+}},2498// CHECK-NEXT:      "line": 55,2499// CHECK-NEXT:      "col": 1,2500// CHECK-NEXT:      "tokLen": 82501// CHECK-NEXT:     },2502// CHECK-NEXT:     "end": {2503// CHECK-NEXT:      "offset": {{[0-9]+}},2504// CHECK-NEXT:      "line": 56,2505// CHECK-NEXT:      "col": 18,2506// CHECK-NEXT:      "tokLen": 12507// CHECK-NEXT:     }2508// CHECK-NEXT:    },2509// CHECK-NEXT:    "parentDeclContextId": "0x{{.*}}",2510// CHECK-NEXT:    "previousDecl": "0x{{.*}}",2511// CHECK-NEXT:    "name": "f",2512// CHECK-NEXT:    "inner": [2513// CHECK-NEXT:     {2514// CHECK-NEXT:      "id": "0x{{.*}}",2515// CHECK-NEXT:      "kind": "TemplateTypeParmDecl",2516// CHECK-NEXT:      "loc": {2517// CHECK-NEXT:       "offset": {{[0-9]+}},2518// CHECK-NEXT:       "line": 55,2519// CHECK-NEXT:       "col": 20,2520// CHECK-NEXT:       "tokLen": 22521// CHECK-NEXT:      },2522// CHECK-NEXT:      "range": {2523// CHECK-NEXT:       "begin": {2524// CHECK-NEXT:        "offset": {{[0-9]+}},2525// CHECK-NEXT:        "col": 11,2526// CHECK-NEXT:        "tokLen": 82527// CHECK-NEXT:       },2528// CHECK-NEXT:       "end": {2529// CHECK-NEXT:        "offset": {{[0-9]+}},2530// CHECK-NEXT:        "col": 20,2531// CHECK-NEXT:        "tokLen": 22532// CHECK-NEXT:       }2533// CHECK-NEXT:      },2534// CHECK-NEXT:      "name": "Uy",2535// CHECK-NEXT:      "tagUsed": "typename",2536// CHECK-NEXT:      "depth": 1,2537// CHECK-NEXT:      "index": 02538// CHECK-NEXT:     },2539// CHECK-NEXT:     {2540// CHECK-NEXT:      "id": "0x{{.*}}",2541// CHECK-NEXT:      "kind": "CXXMethodDecl",2542// CHECK-NEXT:      "loc": {2543// CHECK-NEXT:       "offset": {{[0-9]+}},2544// CHECK-NEXT:       "line": 56,2545// CHECK-NEXT:       "col": 13,2546// CHECK-NEXT:       "tokLen": 12547// CHECK-NEXT:      },2548// CHECK-NEXT:      "range": {2549// CHECK-NEXT:       "begin": {2550// CHECK-NEXT:        "offset": {{[0-9]+}},2551// CHECK-NEXT:        "line": 54,2552// CHECK-NEXT:        "col": 1,2553// CHECK-NEXT:        "tokLen": 82554// CHECK-NEXT:       },2555// CHECK-NEXT:       "end": {2556// CHECK-NEXT:        "offset": {{[0-9]+}},2557// CHECK-NEXT:        "line": 56,2558// CHECK-NEXT:        "col": 18,2559// CHECK-NEXT:        "tokLen": 12560// CHECK-NEXT:       }2561// CHECK-NEXT:      },2562// CHECK-NEXT:      "parentDeclContextId": "0x{{.*}}",2563// CHECK-NEXT:      "previousDecl": "0x{{.*}}",2564// CHECK-NEXT:      "name": "f",2565// CHECK-NEXT:      "type": {2566// CHECK-NEXT:       "qualType": "void ()"2567// CHECK-NEXT:      },2568// CHECK-NEXT:      "inner": [2569// CHECK-NEXT:       {2570// CHECK-NEXT:        "id": "0x{{.*}}",2571// CHECK-NEXT:        "kind": "CompoundStmt",2572// CHECK-NEXT:        "range": {2573// CHECK-NEXT:         "begin": {2574// CHECK-NEXT:          "offset": {{[0-9]+}},2575// CHECK-NEXT:          "col": 17,2576// CHECK-NEXT:          "tokLen": 12577// CHECK-NEXT:         },2578// CHECK-NEXT:         "end": {2579// CHECK-NEXT:          "offset": {{[0-9]+}},2580// CHECK-NEXT:          "col": 18,2581// CHECK-NEXT:          "tokLen": 12582// CHECK-NEXT:         }2583// CHECK-NEXT:        }2584// CHECK-NEXT:       }2585// CHECK-NEXT:      ]2586// CHECK-NEXT:     }2587// CHECK-NEXT:    ]2588// CHECK-NEXT:   },2589// CHECK-NEXT:   {2590// CHECK-NEXT:    "id": "0x{{.*}}",2591// CHECK-NEXT:    "kind": "FunctionTemplateDecl",2592// CHECK-NEXT:    "loc": {2593// CHECK-NEXT:     "offset": {{[0-9]+}},2594// CHECK-NEXT:     "line": 59,2595// CHECK-NEXT:     "col": 6,2596// CHECK-NEXT:     "tokLen": 12597// CHECK-NEXT:    },2598// CHECK-NEXT:    "range": {2599// CHECK-NEXT:     "begin": {2600// CHECK-NEXT:      "offset": {{[0-9]+}},2601// CHECK-NEXT:      "line": 58,2602// CHECK-NEXT:      "col": 1,2603// CHECK-NEXT:      "tokLen": 82604// CHECK-NEXT:     },2605// CHECK-NEXT:     "end": {2606// CHECK-NEXT:      "offset": {{[0-9]+}},2607// CHECK-NEXT:      "line": 59,2608// CHECK-NEXT:      "col": 8,2609// CHECK-NEXT:      "tokLen": 12610// CHECK-NEXT:     }2611// CHECK-NEXT:    },2612// CHECK-NEXT:    "name": "i",2613// CHECK-NEXT:    "inner": [2614// CHECK-NEXT:     {2615// CHECK-NEXT:      "id": "0x{{.*}}",2616// CHECK-NEXT:      "kind": "TemplateTemplateParmDecl",2617// CHECK-NEXT:      "loc": {2618// CHECK-NEXT:       "offset": {{[0-9]+}},2619// CHECK-NEXT:       "line": 58,2620// CHECK-NEXT:       "col": 37,2621// CHECK-NEXT:       "tokLen": 12622// CHECK-NEXT:      },2623// CHECK-NEXT:      "range": {2624// CHECK-NEXT:       "begin": {2625// CHECK-NEXT:        "offset": {{[0-9]+}},2626// CHECK-NEXT:        "col": 11,2627// CHECK-NEXT:        "tokLen": 82628// CHECK-NEXT:       },2629// CHECK-NEXT:       "end": {2630// CHECK-NEXT:        "offset": {{[0-9]+}},2631// CHECK-NEXT:        "col": 39,2632// CHECK-NEXT:        "tokLen": 12633// CHECK-NEXT:       }2634// CHECK-NEXT:      },2635// CHECK-NEXT:      "depth": 0,2636// CHECK-NEXT:      "index": 0,2637// CHECK-NEXT:      "defaultArg": {2638// CHECK-NEXT:       "kind": "TemplateArgument"2639// CHECK-NEXT:      },2640// CHECK-NEXT:      "inner": [2641// CHECK-NEXT:       {2642// CHECK-NEXT:        "id": "0x{{.*}}",2643// CHECK-NEXT:        "kind": "TemplateTypeParmDecl",2644// CHECK-NEXT:        "loc": {2645// CHECK-NEXT:         "offset": {{[0-9]+}},2646// CHECK-NEXT:         "col": 29,2647// CHECK-NEXT:         "tokLen": 12648// CHECK-NEXT:        },2649// CHECK-NEXT:        "range": {2650// CHECK-NEXT:         "begin": {2651// CHECK-NEXT:          "offset": {{[0-9]+}},2652// CHECK-NEXT:          "col": 21,2653// CHECK-NEXT:          "tokLen": 82654// CHECK-NEXT:         },2655// CHECK-NEXT:         "end": {2656// CHECK-NEXT:          "offset": {{[0-9]+}},2657// CHECK-NEXT:          "col": 21,2658// CHECK-NEXT:          "tokLen": 82659// CHECK-NEXT:         }2660// CHECK-NEXT:        },2661// CHECK-NEXT:        "tagUsed": "typename",2662// CHECK-NEXT:        "depth": 1,2663// CHECK-NEXT:        "index": 02664// CHECK-NEXT:       },2665// CHECK-NEXT:       {2666// CHECK-NEXT:        "kind": "TemplateArgument",2667// CHECK-NEXT:        "range": {2668// CHECK-NEXT:         "begin": {2669// CHECK-NEXT:          "offset": {{[0-9]+}},2670// CHECK-NEXT:          "col": 39,2671// CHECK-NEXT:          "tokLen": 12672// CHECK-NEXT:         },2673// CHECK-NEXT:         "end": {2674// CHECK-NEXT:          "offset": {{[0-9]+}},2675// CHECK-NEXT:          "col": 39,2676// CHECK-NEXT:          "tokLen": 12677// CHECK-NEXT:         }2678// CHECK-NEXT:        }2679// CHECK-NEXT:       }2680// CHECK-NEXT:      ]2681// CHECK-NEXT:     },2682// CHECK-NEXT:     {2683// CHECK-NEXT:      "id": "0x{{.*}}",2684// CHECK-NEXT:      "kind": "FunctionDecl",2685// CHECK-NEXT:      "loc": {2686// CHECK-NEXT:       "offset": {{[0-9]+}},2687// CHECK-NEXT:       "line": 59,2688// CHECK-NEXT:       "col": 6,2689// CHECK-NEXT:       "tokLen": 12690// CHECK-NEXT:      },2691// CHECK-NEXT:      "range": {2692// CHECK-NEXT:       "begin": {2693// CHECK-NEXT:        "offset": {{[0-9]+}},2694// CHECK-NEXT:        "col": 1,2695// CHECK-NEXT:        "tokLen": 42696// CHECK-NEXT:       },2697// CHECK-NEXT:       "end": {2698// CHECK-NEXT:        "offset": {{[0-9]+}},2699// CHECK-NEXT:        "col": 8,2700// CHECK-NEXT:        "tokLen": 12701// CHECK-NEXT:       }2702// CHECK-NEXT:      },2703// CHECK-NEXT:      "name": "i",2704// CHECK-NEXT:      "type": {2705// CHECK-NEXT:       "qualType": "void ()"2706// CHECK-NEXT:      }2707// CHECK-NEXT:     }2708// CHECK-NEXT:    ]2709// CHECK-NEXT:   },2710// CHECK-NEXT:   {2711// CHECK-NEXT:    "id": "0x{{.*}}",2712// CHECK-NEXT:    "kind": "ClassTemplateDecl",2713// CHECK-NEXT:    "loc": {2714// CHECK-NEXT:     "offset": {{[0-9]+}},2715// CHECK-NEXT:     "line": 61,2716// CHECK-NEXT:     "col": 24,2717// CHECK-NEXT:     "tokLen": 12718// CHECK-NEXT:    },2719// CHECK-NEXT:    "range": {2720// CHECK-NEXT:     "begin": {2721// CHECK-NEXT:      "offset": {{[0-9]+}},2722// CHECK-NEXT:      "col": 1,2723// CHECK-NEXT:      "tokLen": 82724// CHECK-NEXT:     },2725// CHECK-NEXT:     "end": {2726// CHECK-NEXT:      "offset": {{[0-9]+}},2727// CHECK-NEXT:      "line": 62,2728// CHECK-NEXT:      "col": 1,2729// CHECK-NEXT:      "tokLen": 12730// CHECK-NEXT:     }2731// CHECK-NEXT:    },2732// CHECK-NEXT:    "name": "W",2733// CHECK-NEXT:    "inner": [2734// CHECK-NEXT:     {2735// CHECK-NEXT:      "id": "0x{{.*}}",2736// CHECK-NEXT:      "kind": "NonTypeTemplateParmDecl",2737// CHECK-NEXT:      "loc": {2738// CHECK-NEXT:       "offset": {{[0-9]+}},2739// CHECK-NEXT:       "line": 61,2740// CHECK-NEXT:       "col": 15,2741// CHECK-NEXT:       "tokLen": 12742// CHECK-NEXT:      },2743// CHECK-NEXT:      "range": {2744// CHECK-NEXT:       "begin": {2745// CHECK-NEXT:        "offset": {{[0-9]+}},2746// CHECK-NEXT:        "col": 11,2747// CHECK-NEXT:        "tokLen": 32748// CHECK-NEXT:       },2749// CHECK-NEXT:       "end": {2750// CHECK-NEXT:        "offset": {{[0-9]+}},2751// CHECK-NEXT:        "col": 15,2752// CHECK-NEXT:        "tokLen": 12753// CHECK-NEXT:       }2754// CHECK-NEXT:      },2755// CHECK-NEXT:      "name": "A",2756// CHECK-NEXT:      "type": {2757// CHECK-NEXT:       "qualType": "int"2758// CHECK-NEXT:      },2759// CHECK-NEXT:      "depth": 0,2760// CHECK-NEXT:      "index": 02761// CHECK-NEXT:     },2762// CHECK-NEXT:     {2763// CHECK-NEXT:      "id": "0x{{.*}}",2764// CHECK-NEXT:      "kind": "CXXRecordDecl",2765// CHECK-NEXT:      "loc": {2766// CHECK-NEXT:       "offset": {{[0-9]+}},2767// CHECK-NEXT:       "col": 24,2768// CHECK-NEXT:       "tokLen": 12769// CHECK-NEXT:      },2770// CHECK-NEXT:      "range": {2771// CHECK-NEXT:       "begin": {2772// CHECK-NEXT:        "offset": {{[0-9]+}},2773// CHECK-NEXT:        "col": 18,2774// CHECK-NEXT:        "tokLen": 52775// CHECK-NEXT:       },2776// CHECK-NEXT:       "end": {2777// CHECK-NEXT:        "offset": {{[0-9]+}},2778// CHECK-NEXT:        "line": 62,2779// CHECK-NEXT:        "col": 1,2780// CHECK-NEXT:        "tokLen": 12781// CHECK-NEXT:       }2782// CHECK-NEXT:      },2783// CHECK-NEXT:      "name": "W",2784// CHECK-NEXT:      "tagUsed": "class",2785// CHECK-NEXT:      "completeDefinition": true,2786// CHECK-NEXT:      "definitionData": {2787// CHECK-NEXT:       "canConstDefaultInit": true,2788// CHECK-NEXT:       "copyAssign": {2789// CHECK-NEXT:        "hasConstParam": true,2790// CHECK-NEXT:        "implicitHasConstParam": true,2791// CHECK-NEXT:        "needsImplicit": true,2792// CHECK-NEXT:        "simple": true,2793// CHECK-NEXT:        "trivial": true2794// CHECK-NEXT:       },2795// CHECK-NEXT:       "copyCtor": {2796// CHECK-NEXT:        "hasConstParam": true,2797// CHECK-NEXT:        "implicitHasConstParam": true,2798// CHECK-NEXT:        "needsImplicit": true,2799// CHECK-NEXT:        "simple": true,2800// CHECK-NEXT:        "trivial": true2801// CHECK-NEXT:       },2802// CHECK-NEXT:       "defaultCtor": {2803// CHECK-NEXT:        "defaultedIsConstexpr": true,2804// CHECK-NEXT:        "exists": true,2805// CHECK-NEXT:        "isConstexpr": true,2806// CHECK-NEXT:        "needsImplicit": true,2807// CHECK-NEXT:        "trivial": true2808// CHECK-NEXT:       },2809// CHECK-NEXT:       "dtor": {2810// CHECK-NEXT:        "irrelevant": true,2811// CHECK-NEXT:        "needsImplicit": true,2812// CHECK-NEXT:        "simple": true,2813// CHECK-NEXT:        "trivial": true2814// CHECK-NEXT:       },2815// CHECK-NEXT:       "hasConstexprNonCopyMoveConstructor": true,2816// CHECK-NEXT:       "isAggregate": true,2817// CHECK-NEXT:       "isEmpty": true,2818// CHECK-NEXT:       "isLiteral": true,2819// CHECK-NEXT:       "isPOD": true,2820// CHECK-NEXT:       "isStandardLayout": true,2821// CHECK-NEXT:       "isTrivial": true,2822// CHECK-NEXT:       "isTriviallyCopyable": true,2823// CHECK-NEXT:       "moveAssign": {2824// CHECK-NEXT:        "exists": true,2825// CHECK-NEXT:        "needsImplicit": true,2826// CHECK-NEXT:        "simple": true,2827// CHECK-NEXT:        "trivial": true2828// CHECK-NEXT:       },2829// CHECK-NEXT:       "moveCtor": {2830// CHECK-NEXT:        "exists": true,2831// CHECK-NEXT:        "needsImplicit": true,2832// CHECK-NEXT:        "simple": true,2833// CHECK-NEXT:        "trivial": true2834// CHECK-NEXT:       }2835// CHECK-NEXT:      },2836// CHECK-NEXT:      "inner": [2837// CHECK-NEXT:       {2838// CHECK-NEXT:        "id": "0x{{.*}}",2839// CHECK-NEXT:        "kind": "CXXRecordDecl",2840// CHECK-NEXT:        "loc": {2841// CHECK-NEXT:         "offset": {{[0-9]+}},2842// CHECK-NEXT:         "line": 61,2843// CHECK-NEXT:         "col": 24,2844// CHECK-NEXT:         "tokLen": 12845// CHECK-NEXT:        },2846// CHECK-NEXT:        "range": {2847// CHECK-NEXT:         "begin": {2848// CHECK-NEXT:          "offset": {{[0-9]+}},2849// CHECK-NEXT:          "col": 18,2850// CHECK-NEXT:          "tokLen": 52851// CHECK-NEXT:         },2852// CHECK-NEXT:         "end": {2853// CHECK-NEXT:          "offset": {{[0-9]+}},2854// CHECK-NEXT:          "col": 24,2855// CHECK-NEXT:          "tokLen": 12856// CHECK-NEXT:         }2857// CHECK-NEXT:        },2858// CHECK-NEXT:        "isImplicit": true,2859// CHECK-NEXT:        "name": "W",2860// CHECK-NEXT:        "tagUsed": "class"2861// CHECK-NEXT:       }2862// CHECK-NEXT:      ]2863// CHECK-NEXT:     },2864// CHECK-NEXT:     {2865// CHECK-NEXT:      "id": "0x{{.*}}",2866// CHECK-NEXT:      "kind": "ClassTemplateSpecializationDecl",2867// CHECK-NEXT:      "loc": {2868// CHECK-NEXT:       "offset": {{[0-9]+}},2869// CHECK-NEXT:       "col": 24,2870// CHECK-NEXT:       "tokLen": 12871// CHECK-NEXT:      },2872// CHECK-NEXT:      "range": {2873// CHECK-NEXT:       "begin": {2874// CHECK-NEXT:        "offset": {{[0-9]+}},2875// CHECK-NEXT:        "col": 1,2876// CHECK-NEXT:        "tokLen": 82877// CHECK-NEXT:       },2878// CHECK-NEXT:       "end": {2879// CHECK-NEXT:        "offset": {{[0-9]+}},2880// CHECK-NEXT:        "line": 62,2881// CHECK-NEXT:        "col": 1,2882// CHECK-NEXT:        "tokLen": 12883// CHECK-NEXT:       }2884// CHECK-NEXT:      },2885// CHECK-NEXT:      "name": "W",2886// CHECK-NEXT:      "tagUsed": "class",2887// CHECK-NEXT:      "inner": [2888// CHECK-NEXT:       {2889// CHECK-NEXT:        "kind": "TemplateArgument",2890// CHECK-NEXT:        "value": 12891// CHECK-NEXT:       }2892// CHECK-NEXT:      ]2893// CHECK-NEXT:     }2894// CHECK-NEXT:    ]2895// CHECK-NEXT:   },2896// CHECK-NEXT:   {2897// CHECK-NEXT:    "id": "0x{{.*}}",2898// CHECK-NEXT:    "kind": "FunctionTemplateDecl",2899// CHECK-NEXT:    "loc": {2900// CHECK-NEXT:     "offset": {{[0-9]+}},2901// CHECK-NEXT:     "line": 61,2902// CHECK-NEXT:     "col": 24,2903// CHECK-NEXT:     "tokLen": 12904// CHECK-NEXT:    },2905// CHECK-NEXT:    "range": {2906// CHECK-NEXT:     "begin": {2907// CHECK-NEXT:      "offset": {{[0-9]+}},2908// CHECK-NEXT:      "col": 1,2909// CHECK-NEXT:      "tokLen": 82910// CHECK-NEXT:     },2911// CHECK-NEXT:     "end": {2912// CHECK-NEXT:      "offset": {{[0-9]+}},2913// CHECK-NEXT:      "col": 24,2914// CHECK-NEXT:      "tokLen": 12915// CHECK-NEXT:     }2916// CHECK-NEXT:    },2917// CHECK-NEXT:    "isImplicit": true,2918// CHECK-NEXT:    "name": "<deduction guide for W>",2919// CHECK-NEXT:    "inner": [2920// CHECK-NEXT:     {2921// CHECK-NEXT:      "id": "0x{{.*}}",2922// CHECK-NEXT:      "kind": "NonTypeTemplateParmDecl",2923// CHECK-NEXT:      "loc": {2924// CHECK-NEXT:       "offset": {{[0-9]+}},2925// CHECK-NEXT:       "col": 15,2926// CHECK-NEXT:       "tokLen": 12927// CHECK-NEXT:      },2928// CHECK-NEXT:      "range": {2929// CHECK-NEXT:       "begin": {2930// CHECK-NEXT:        "offset": {{[0-9]+}},2931// CHECK-NEXT:        "col": 11,2932// CHECK-NEXT:        "tokLen": 32933// CHECK-NEXT:       },2934// CHECK-NEXT:       "end": {2935// CHECK-NEXT:        "offset": {{[0-9]+}},2936// CHECK-NEXT:        "col": 15,2937// CHECK-NEXT:        "tokLen": 12938// CHECK-NEXT:       }2939// CHECK-NEXT:      },2940// CHECK-NEXT:      "name": "A",2941// CHECK-NEXT:      "type": {2942// CHECK-NEXT:       "qualType": "int"2943// CHECK-NEXT:      },2944// CHECK-NEXT:      "depth": 0,2945// CHECK-NEXT:      "index": 02946// CHECK-NEXT:     },2947// CHECK-NEXT:     {2948// CHECK-NEXT:      "id": "0x{{.*}}",2949// CHECK-NEXT:      "kind": "CXXDeductionGuideDecl",2950// CHECK-NEXT:      "loc": {2951// CHECK-NEXT:       "offset": {{[0-9]+}},2952// CHECK-NEXT:       "col": 24,2953// CHECK-NEXT:       "tokLen": 12954// CHECK-NEXT:      },2955// CHECK-NEXT:      "range": {2956// CHECK-NEXT:       "begin": {2957// CHECK-NEXT:        "offset": {{[0-9]+}},2958// CHECK-NEXT:        "col": 24,2959// CHECK-NEXT:        "tokLen": 12960// CHECK-NEXT:       },2961// CHECK-NEXT:       "end": {2962// CHECK-NEXT:        "offset": {{[0-9]+}},2963// CHECK-NEXT:        "col": 24,2964// CHECK-NEXT:        "tokLen": 12965// CHECK-NEXT:       }2966// CHECK-NEXT:      },2967// CHECK-NEXT:      "isImplicit": true,2968// CHECK-NEXT:      "name": "<deduction guide for W>",2969// CHECK-NEXT:      "type": {2970// CHECK-NEXT:       "qualType": "auto () -> W<A>"2971// CHECK-NEXT:      }2972// CHECK-NEXT:     }2973// CHECK-NEXT:    ]2974// CHECK-NEXT:   },2975// CHECK-NEXT:   {2976// CHECK-NEXT:    "id": "0x{{.*}}",2977// CHECK-NEXT:    "kind": "FunctionTemplateDecl",2978// CHECK-NEXT:    "loc": {2979// CHECK-NEXT:     "offset": {{[0-9]+}},2980// CHECK-NEXT:     "col": 24,2981// CHECK-NEXT:     "tokLen": 12982// CHECK-NEXT:    },2983// CHECK-NEXT:    "range": {2984// CHECK-NEXT:     "begin": {2985// CHECK-NEXT:      "offset": {{[0-9]+}},2986// CHECK-NEXT:      "col": 1,2987// CHECK-NEXT:      "tokLen": 82988// CHECK-NEXT:     },2989// CHECK-NEXT:     "end": {2990// CHECK-NEXT:      "offset": {{[0-9]+}},2991// CHECK-NEXT:      "col": 24,2992// CHECK-NEXT:      "tokLen": 12993// CHECK-NEXT:     }2994// CHECK-NEXT:    },2995// CHECK-NEXT:    "isImplicit": true,2996// CHECK-NEXT:    "name": "<deduction guide for W>",2997// CHECK-NEXT:    "inner": [2998// CHECK-NEXT:     {2999// CHECK-NEXT:      "id": "0x{{.*}}",3000// CHECK-NEXT:      "kind": "NonTypeTemplateParmDecl",3001// CHECK-NEXT:      "loc": {3002// CHECK-NEXT:       "offset": {{[0-9]+}},3003// CHECK-NEXT:       "col": 15,3004// CHECK-NEXT:       "tokLen": 13005// CHECK-NEXT:      },3006// CHECK-NEXT:      "range": {3007// CHECK-NEXT:       "begin": {3008// CHECK-NEXT:        "offset": {{[0-9]+}},3009// CHECK-NEXT:        "col": 11,3010// CHECK-NEXT:        "tokLen": 33011// CHECK-NEXT:       },3012// CHECK-NEXT:       "end": {3013// CHECK-NEXT:        "offset": {{[0-9]+}},3014// CHECK-NEXT:        "col": 15,3015// CHECK-NEXT:        "tokLen": 13016// CHECK-NEXT:       }3017// CHECK-NEXT:      },3018// CHECK-NEXT:      "name": "A",3019// CHECK-NEXT:      "type": {3020// CHECK-NEXT:       "qualType": "int"3021// CHECK-NEXT:      },3022// CHECK-NEXT:      "depth": 0,3023// CHECK-NEXT:      "index": 03024// CHECK-NEXT:     },3025// CHECK-NEXT:     {3026// CHECK-NEXT:      "id": "0x{{.*}}",3027// CHECK-NEXT:      "kind": "CXXDeductionGuideDecl",3028// CHECK-NEXT:      "loc": {3029// CHECK-NEXT:       "offset": {{[0-9]+}},3030// CHECK-NEXT:       "col": 24,3031// CHECK-NEXT:       "tokLen": 13032// CHECK-NEXT:      },3033// CHECK-NEXT:      "range": {3034// CHECK-NEXT:       "begin": {3035// CHECK-NEXT:        "offset": {{[0-9]+}},3036// CHECK-NEXT:        "col": 24,3037// CHECK-NEXT:        "tokLen": 13038// CHECK-NEXT:       },3039// CHECK-NEXT:       "end": {3040// CHECK-NEXT:        "offset": {{[0-9]+}},3041// CHECK-NEXT:        "col": 24,3042// CHECK-NEXT:        "tokLen": 13043// CHECK-NEXT:       }3044// CHECK-NEXT:      },3045// CHECK-NEXT:      "isImplicit": true,3046// CHECK-NEXT:      "name": "<deduction guide for W>",3047// CHECK-NEXT:      "type": {3048// CHECK-NEXT:       "qualType": "auto (W<A>) -> W<A>"3049// CHECK-NEXT:      },3050// CHECK-NEXT:      "inner": [3051// CHECK-NEXT:       {3052// CHECK-NEXT:        "id": "0x{{.*}}",3053// CHECK-NEXT:        "kind": "ParmVarDecl",3054// CHECK-NEXT:        "loc": {3055// CHECK-NEXT:         "offset": {{[0-9]+}},3056// CHECK-NEXT:         "col": 24,3057// CHECK-NEXT:         "tokLen": 13058// CHECK-NEXT:        },3059// CHECK-NEXT:        "range": {3060// CHECK-NEXT:         "begin": {3061// CHECK-NEXT:          "offset": {{[0-9]+}},3062// CHECK-NEXT:          "col": 24,3063// CHECK-NEXT:          "tokLen": 13064// CHECK-NEXT:         },3065// CHECK-NEXT:         "end": {3066// CHECK-NEXT:          "offset": {{[0-9]+}},3067// CHECK-NEXT:          "col": 24,3068// CHECK-NEXT:          "tokLen": 13069// CHECK-NEXT:         }3070// CHECK-NEXT:        },3071// CHECK-NEXT:        "type": {3072// CHECK-NEXT:         "qualType": "W<A>"3073// CHECK-NEXT:        }3074// CHECK-NEXT:       }3075// CHECK-NEXT:      ]3076// CHECK-NEXT:     }3077// CHECK-NEXT:    ]3078// CHECK-NEXT:   },3079// CHECK-NEXT:   {3080// CHECK-NEXT:    "id": "0x{{.*}}",3081// CHECK-NEXT:    "kind": "CXXDeductionGuideDecl",3082// CHECK-NEXT:    "loc": {3083// CHECK-NEXT:     "offset": {{[0-9]+}},3084// CHECK-NEXT:     "line": 63,3085// CHECK-NEXT:     "col": 1,3086// CHECK-NEXT:     "tokLen": 13087// CHECK-NEXT:    },3088// CHECK-NEXT:    "range": {3089// CHECK-NEXT:     "begin": {3090// CHECK-NEXT:      "offset": {{[0-9]+}},3091// CHECK-NEXT:      "col": 1,3092// CHECK-NEXT:      "tokLen": 13093// CHECK-NEXT:     },3094// CHECK-NEXT:     "end": {3095// CHECK-NEXT:      "offset": {{[0-9]+}},3096// CHECK-NEXT:      "col": 12,3097// CHECK-NEXT:      "tokLen": 13098// CHECK-NEXT:     }3099// CHECK-NEXT:    },3100// CHECK-NEXT:    "name": "<deduction guide for W>",3101// CHECK-NEXT:    "type": {3102// CHECK-NEXT:     "qualType": "auto (int) -> W<1>"3103// CHECK-NEXT:    },3104// CHECK-NEXT:    "inner": [3105// CHECK-NEXT:     {3106// CHECK-NEXT:      "id": "0x{{.*}}",3107// CHECK-NEXT:      "kind": "ParmVarDecl",3108// CHECK-NEXT:      "loc": {3109// CHECK-NEXT:       "offset": {{[0-9]+}},3110// CHECK-NEXT:       "col": 6,3111// CHECK-NEXT:       "tokLen": 13112// CHECK-NEXT:      },3113// CHECK-NEXT:      "range": {3114// CHECK-NEXT:       "begin": {3115// CHECK-NEXT:        "offset": {{[0-9]+}},3116// CHECK-NEXT:        "col": 3,3117// CHECK-NEXT:        "tokLen": 33118// CHECK-NEXT:       },3119// CHECK-NEXT:       "end": {3120// CHECK-NEXT:        "offset": {{[0-9]+}},3121// CHECK-NEXT:        "col": 3,3122// CHECK-NEXT:        "tokLen": 33123// CHECK-NEXT:       }3124// CHECK-NEXT:      },3125// CHECK-NEXT:      "type": {3126// CHECK-NEXT:       "qualType": "int"3127// CHECK-NEXT:      }3128// CHECK-NEXT:     }3129// CHECK-NEXT:    ]3130// CHECK-NEXT:   }3131// CHECK-NEXT:  ]3132// CHECK-NEXT: }3133