1 // RUN: %clang_cc1 -std=c++17 -triple x86_64-unknown-unknown -ast-dump=json %s | FileCheck -strict-whitespace %s 2 3 template <typename Ty> 4 void a(Ty); 5 6 template <typename... Ty> 7 void b(Ty...); 8 9 template <class Ty, typename Uy> 10 void c(Ty); 11 12 template <> 13 void c<float, int>(float); 14 15 template <typename Ty, template<typename> typename Uy> 16 void d(Ty, Uy<Ty>); 17 18 template <class Ty> 19 void e(Ty); 20 21 template <int N> 22 void f(int i = N); 23 24 template <typename Ty = int> 25 void g(Ty); 26 27 template <typename = void> 28 void h(); 29 30 template <typename Ty> 31 struct R {}; 32 33 template <> 34 struct R<int> {}; 35 36 template <typename Ty, class Uy> 37 struct S {}; 38 39 template <typename Ty> 40 struct S<Ty, int> {}; 41 42 template <auto> 43 struct T {}; 44 45 template <decltype(auto)> 46 struct U {}; 47 48 template <typename Ty> 49 struct V { 50 template <typename Uy> 51 void f(); 52 }; 53 54 template <typename Ty> 55 template <typename Uy> 56 void V<Ty>::f() {} 57 58 // NOTE: CHECK lines have been autogenerated by gen_ast_dump_json_test.py 59 60 61 // CHECK: "kind": "TranslationUnitDecl", 62 // CHECK-NEXT: "loc": {}, 63 // CHECK-NEXT: "range": { 64 // CHECK-NEXT: "begin": {}, 65 // CHECK-NEXT: "end": {} 66 // CHECK-NEXT: }, 67 // CHECK-NEXT: "inner": [ 68 // CHECK-NEXT: { 69 // CHECK-NEXT: "id": "0x{{.*}}", 70 // CHECK-NEXT: "kind": "TypedefDecl", 71 // CHECK-NEXT: "loc": {}, 72 // CHECK-NEXT: "range": { 73 // CHECK-NEXT: "begin": {}, 74 // CHECK-NEXT: "end": {} 75 // CHECK-NEXT: }, 76 // CHECK-NEXT: "isImplicit": true, 77 // CHECK-NEXT: "name": "__int128_t", 78 // CHECK-NEXT: "type": { 79 // CHECK-NEXT: "qualType": "__int128" 80 // CHECK-NEXT: }, 81 // CHECK-NEXT: "inner": [ 82 // CHECK-NEXT: { 83 // CHECK-NEXT: "id": "0x{{.*}}", 84 // CHECK-NEXT: "kind": "BuiltinType", 85 // CHECK-NEXT: "type": { 86 // CHECK-NEXT: "qualType": "__int128" 87 // CHECK-NEXT: } 88 // CHECK-NEXT: } 89 // CHECK-NEXT: ] 90 // CHECK-NEXT: }, 91 // CHECK-NEXT: { 92 // CHECK-NEXT: "id": "0x{{.*}}", 93 // CHECK-NEXT: "kind": "TypedefDecl", 94 // CHECK-NEXT: "loc": {}, 95 // CHECK-NEXT: "range": { 96 // CHECK-NEXT: "begin": {}, 97 // CHECK-NEXT: "end": {} 98 // CHECK-NEXT: }, 99 // CHECK-NEXT: "isImplicit": true, 100 // CHECK-NEXT: "name": "__uint128_t", 101 // CHECK-NEXT: "type": { 102 // CHECK-NEXT: "qualType": "unsigned __int128" 103 // CHECK-NEXT: }, 104 // CHECK-NEXT: "inner": [ 105 // CHECK-NEXT: { 106 // CHECK-NEXT: "id": "0x{{.*}}", 107 // CHECK-NEXT: "kind": "BuiltinType", 108 // CHECK-NEXT: "type": { 109 // CHECK-NEXT: "qualType": "unsigned __int128" 110 // CHECK-NEXT: } 111 // CHECK-NEXT: } 112 // CHECK-NEXT: ] 113 // CHECK-NEXT: }, 114 // CHECK-NEXT: { 115 // CHECK-NEXT: "id": "0x{{.*}}", 116 // CHECK-NEXT: "kind": "TypedefDecl", 117 // CHECK-NEXT: "loc": {}, 118 // CHECK-NEXT: "range": { 119 // CHECK-NEXT: "begin": {}, 120 // CHECK-NEXT: "end": {} 121 // CHECK-NEXT: }, 122 // CHECK-NEXT: "isImplicit": true, 123 // CHECK-NEXT: "name": "__NSConstantString", 124 // CHECK-NEXT: "type": { 125 // CHECK-NEXT: "qualType": "__NSConstantString_tag" 126 // CHECK-NEXT: }, 127 // CHECK-NEXT: "inner": [ 128 // CHECK-NEXT: { 129 // CHECK-NEXT: "id": "0x{{.*}}", 130 // CHECK-NEXT: "kind": "RecordType", 131 // CHECK-NEXT: "type": { 132 // CHECK-NEXT: "qualType": "__NSConstantString_tag" 133 // CHECK-NEXT: }, 134 // CHECK-NEXT: "decl": { 135 // CHECK-NEXT: "id": "0x{{.*}}", 136 // CHECK-NEXT: "kind": "CXXRecordDecl", 137 // CHECK-NEXT: "name": "__NSConstantString_tag" 138 // CHECK-NEXT: } 139 // CHECK-NEXT: } 140 // CHECK-NEXT: ] 141 // CHECK-NEXT: }, 142 // CHECK-NEXT: { 143 // CHECK-NEXT: "id": "0x{{.*}}", 144 // CHECK-NEXT: "kind": "TypedefDecl", 145 // CHECK-NEXT: "loc": {}, 146 // CHECK-NEXT: "range": { 147 // CHECK-NEXT: "begin": {}, 148 // CHECK-NEXT: "end": {} 149 // CHECK-NEXT: }, 150 // CHECK-NEXT: "isImplicit": true, 151 // CHECK-NEXT: "name": "__builtin_ms_va_list", 152 // CHECK-NEXT: "type": { 153 // CHECK-NEXT: "qualType": "char *" 154 // CHECK-NEXT: }, 155 // CHECK-NEXT: "inner": [ 156 // CHECK-NEXT: { 157 // CHECK-NEXT: "id": "0x{{.*}}", 158 // CHECK-NEXT: "kind": "PointerType", 159 // CHECK-NEXT: "type": { 160 // CHECK-NEXT: "qualType": "char *" 161 // CHECK-NEXT: }, 162 // CHECK-NEXT: "inner": [ 163 // CHECK-NEXT: { 164 // CHECK-NEXT: "id": "0x{{.*}}", 165 // CHECK-NEXT: "kind": "BuiltinType", 166 // CHECK-NEXT: "type": { 167 // CHECK-NEXT: "qualType": "char" 168 // CHECK-NEXT: } 169 // CHECK-NEXT: } 170 // CHECK-NEXT: ] 171 // CHECK-NEXT: } 172 // CHECK-NEXT: ] 173 // CHECK-NEXT: }, 174 // CHECK-NEXT: { 175 // CHECK-NEXT: "id": "0x{{.*}}", 176 // CHECK-NEXT: "kind": "TypedefDecl", 177 // CHECK-NEXT: "loc": {}, 178 // CHECK-NEXT: "range": { 179 // CHECK-NEXT: "begin": {}, 180 // CHECK-NEXT: "end": {} 181 // CHECK-NEXT: }, 182 // CHECK-NEXT: "isImplicit": true, 183 // CHECK-NEXT: "name": "__builtin_va_list", 184 // CHECK-NEXT: "type": { 185 // CHECK-NEXT: "qualType": "__va_list_tag [1]" 186 // CHECK-NEXT: }, 187 // CHECK-NEXT: "inner": [ 188 // CHECK-NEXT: { 189 // CHECK-NEXT: "id": "0x{{.*}}", 190 // CHECK-NEXT: "kind": "ConstantArrayType", 191 // CHECK-NEXT: "type": { 192 // CHECK-NEXT: "qualType": "__va_list_tag [1]" 193 // CHECK-NEXT: }, 194 // CHECK-NEXT: "size": 1, 195 // CHECK-NEXT: "inner": [ 196 // CHECK-NEXT: { 197 // CHECK-NEXT: "id": "0x{{.*}}", 198 // CHECK-NEXT: "kind": "RecordType", 199 // CHECK-NEXT: "type": { 200 // CHECK-NEXT: "qualType": "__va_list_tag" 201 // CHECK-NEXT: }, 202 // CHECK-NEXT: "decl": { 203 // CHECK-NEXT: "id": "0x{{.*}}", 204 // CHECK-NEXT: "kind": "CXXRecordDecl", 205 // CHECK-NEXT: "name": "__va_list_tag" 206 // CHECK-NEXT: } 207 // CHECK-NEXT: } 208 // CHECK-NEXT: ] 209 // CHECK-NEXT: } 210 // CHECK-NEXT: ] 211 // CHECK-NEXT: }, 212 // CHECK-NEXT: { 213 // CHECK-NEXT: "id": "0x{{.*}}", 214 // CHECK-NEXT: "kind": "FunctionTemplateDecl", 215 // CHECK-NEXT: "loc": { 216 // CHECK-NEXT: "file": "{{.*}}", 217 // CHECK-NEXT: "line": 4, 218 // CHECK-NEXT: "col": 6, 219 // CHECK-NEXT: "tokLen": 1 220 // CHECK-NEXT: }, 221 // CHECK-NEXT: "range": { 222 // CHECK-NEXT: "begin": { 223 // CHECK-NEXT: "line": 3, 224 // CHECK-NEXT: "col": 1, 225 // CHECK-NEXT: "tokLen": 8 226 // CHECK-NEXT: }, 227 // CHECK-NEXT: "end": { 228 // CHECK-NEXT: "line": 4, 229 // CHECK-NEXT: "col": 10, 230 // CHECK-NEXT: "tokLen": 1 231 // CHECK-NEXT: } 232 // CHECK-NEXT: }, 233 // CHECK-NEXT: "name": "a", 234 // CHECK-NEXT: "inner": [ 235 // CHECK-NEXT: { 236 // CHECK-NEXT: "id": "0x{{.*}}", 237 // CHECK-NEXT: "kind": "TemplateTypeParmDecl", 238 // CHECK-NEXT: "loc": { 239 // CHECK-NEXT: "line": 3, 240 // CHECK-NEXT: "col": 20, 241 // CHECK-NEXT: "tokLen": 2 242 // CHECK-NEXT: }, 243 // CHECK-NEXT: "range": { 244 // CHECK-NEXT: "begin": { 245 // CHECK-NEXT: "col": 11, 246 // CHECK-NEXT: "tokLen": 8 247 // CHECK-NEXT: }, 248 // CHECK-NEXT: "end": { 249 // CHECK-NEXT: "col": 20, 250 // CHECK-NEXT: "tokLen": 2 251 // CHECK-NEXT: } 252 // CHECK-NEXT: }, 253 // CHECK-NEXT: "isReferenced": true, 254 // CHECK-NEXT: "name": "Ty", 255 // CHECK-NEXT: "tagUsed": "typename", 256 // CHECK-NEXT: "depth": 0, 257 // CHECK-NEXT: "index": 0 258 // CHECK-NEXT: }, 259 // CHECK-NEXT: { 260 // CHECK-NEXT: "id": "0x{{.*}}", 261 // CHECK-NEXT: "kind": "FunctionDecl", 262 // CHECK-NEXT: "loc": { 263 // CHECK-NEXT: "line": 4, 264 // CHECK-NEXT: "col": 6, 265 // CHECK-NEXT: "tokLen": 1 266 // CHECK-NEXT: }, 267 // CHECK-NEXT: "range": { 268 // CHECK-NEXT: "begin": { 269 // CHECK-NEXT: "col": 1, 270 // CHECK-NEXT: "tokLen": 4 271 // CHECK-NEXT: }, 272 // CHECK-NEXT: "end": { 273 // CHECK-NEXT: "col": 10, 274 // CHECK-NEXT: "tokLen": 1 275 // CHECK-NEXT: } 276 // CHECK-NEXT: }, 277 // CHECK-NEXT: "name": "a", 278 // CHECK-NEXT: "type": { 279 // CHECK-NEXT: "qualType": "void (Ty)" 280 // CHECK-NEXT: }, 281 // CHECK-NEXT: "inner": [ 282 // CHECK-NEXT: { 283 // CHECK-NEXT: "id": "0x{{.*}}", 284 // CHECK-NEXT: "kind": "ParmVarDecl", 285 // CHECK-NEXT: "loc": { 286 // CHECK-NEXT: "col": 10, 287 // CHECK-NEXT: "tokLen": 1 288 // CHECK-NEXT: }, 289 // CHECK-NEXT: "range": { 290 // CHECK-NEXT: "begin": { 291 // CHECK-NEXT: "col": 8, 292 // CHECK-NEXT: "tokLen": 2 293 // CHECK-NEXT: }, 294 // CHECK-NEXT: "end": { 295 // CHECK-NEXT: "col": 8, 296 // CHECK-NEXT: "tokLen": 2 297 // CHECK-NEXT: } 298 // CHECK-NEXT: }, 299 // CHECK-NEXT: "type": { 300 // CHECK-NEXT: "qualType": "Ty" 301 // CHECK-NEXT: } 302 // CHECK-NEXT: } 303 // CHECK-NEXT: ] 304 // CHECK-NEXT: } 305 // CHECK-NEXT: ] 306 // CHECK-NEXT: }, 307 // CHECK-NEXT: { 308 // CHECK-NEXT: "id": "0x{{.*}}", 309 // CHECK-NEXT: "kind": "FunctionTemplateDecl", 310 // CHECK-NEXT: "loc": { 311 // CHECK-NEXT: "line": 7, 312 // CHECK-NEXT: "col": 6, 313 // CHECK-NEXT: "tokLen": 1 314 // CHECK-NEXT: }, 315 // CHECK-NEXT: "range": { 316 // CHECK-NEXT: "begin": { 317 // CHECK-NEXT: "line": 6, 318 // CHECK-NEXT: "col": 1, 319 // CHECK-NEXT: "tokLen": 8 320 // CHECK-NEXT: }, 321 // CHECK-NEXT: "end": { 322 // CHECK-NEXT: "line": 7, 323 // CHECK-NEXT: "col": 13, 324 // CHECK-NEXT: "tokLen": 1 325 // CHECK-NEXT: } 326 // CHECK-NEXT: }, 327 // CHECK-NEXT: "name": "b", 328 // CHECK-NEXT: "inner": [ 329 // CHECK-NEXT: { 330 // CHECK-NEXT: "id": "0x{{.*}}", 331 // CHECK-NEXT: "kind": "TemplateTypeParmDecl", 332 // CHECK-NEXT: "loc": { 333 // CHECK-NEXT: "line": 6, 334 // CHECK-NEXT: "col": 23, 335 // CHECK-NEXT: "tokLen": 2 336 // CHECK-NEXT: }, 337 // CHECK-NEXT: "range": { 338 // CHECK-NEXT: "begin": { 339 // CHECK-NEXT: "col": 11, 340 // CHECK-NEXT: "tokLen": 8 341 // CHECK-NEXT: }, 342 // CHECK-NEXT: "end": { 343 // CHECK-NEXT: "col": 23, 344 // CHECK-NEXT: "tokLen": 2 345 // CHECK-NEXT: } 346 // CHECK-NEXT: }, 347 // CHECK-NEXT: "isReferenced": true, 348 // CHECK-NEXT: "name": "Ty", 349 // CHECK-NEXT: "tagUsed": "typename", 350 // CHECK-NEXT: "depth": 0, 351 // CHECK-NEXT: "index": 0, 352 // CHECK-NEXT: "isParameterPack": true 353 // CHECK-NEXT: }, 354 // CHECK-NEXT: { 355 // CHECK-NEXT: "id": "0x{{.*}}", 356 // CHECK-NEXT: "kind": "FunctionDecl", 357 // CHECK-NEXT: "loc": { 358 // CHECK-NEXT: "line": 7, 359 // CHECK-NEXT: "col": 6, 360 // CHECK-NEXT: "tokLen": 1 361 // CHECK-NEXT: }, 362 // CHECK-NEXT: "range": { 363 // CHECK-NEXT: "begin": { 364 // CHECK-NEXT: "col": 1, 365 // CHECK-NEXT: "tokLen": 4 366 // CHECK-NEXT: }, 367 // CHECK-NEXT: "end": { 368 // CHECK-NEXT: "col": 13, 369 // CHECK-NEXT: "tokLen": 1 370 // CHECK-NEXT: } 371 // CHECK-NEXT: }, 372 // CHECK-NEXT: "name": "b", 373 // CHECK-NEXT: "type": { 374 // CHECK-NEXT: "qualType": "void (Ty...)" 375 // CHECK-NEXT: }, 376 // CHECK-NEXT: "inner": [ 377 // CHECK-NEXT: { 378 // CHECK-NEXT: "id": "0x{{.*}}", 379 // CHECK-NEXT: "kind": "ParmVarDecl", 380 // CHECK-NEXT: "loc": { 381 // CHECK-NEXT: "col": 13, 382 // CHECK-NEXT: "tokLen": 1 383 // CHECK-NEXT: }, 384 // CHECK-NEXT: "range": { 385 // CHECK-NEXT: "begin": { 386 // CHECK-NEXT: "col": 8, 387 // CHECK-NEXT: "tokLen": 2 388 // CHECK-NEXT: }, 389 // CHECK-NEXT: "end": { 390 // CHECK-NEXT: "col": 10, 391 // CHECK-NEXT: "tokLen": 3 392 // CHECK-NEXT: } 393 // CHECK-NEXT: }, 394 // CHECK-NEXT: "type": { 395 // CHECK-NEXT: "qualType": "Ty..." 396 // CHECK-NEXT: }, 397 // CHECK-NEXT: "isParameterPack": true 398 // CHECK-NEXT: } 399 // CHECK-NEXT: ] 400 // CHECK-NEXT: } 401 // CHECK-NEXT: ] 402 // CHECK-NEXT: }, 403 // CHECK-NEXT: { 404 // CHECK-NEXT: "id": "0x{{.*}}", 405 // CHECK-NEXT: "kind": "FunctionTemplateDecl", 406 // CHECK-NEXT: "loc": { 407 // CHECK-NEXT: "line": 10, 408 // CHECK-NEXT: "col": 6, 409 // CHECK-NEXT: "tokLen": 1 410 // CHECK-NEXT: }, 411 // CHECK-NEXT: "range": { 412 // CHECK-NEXT: "begin": { 413 // CHECK-NEXT: "line": 9, 414 // CHECK-NEXT: "col": 1, 415 // CHECK-NEXT: "tokLen": 8 416 // CHECK-NEXT: }, 417 // CHECK-NEXT: "end": { 418 // CHECK-NEXT: "line": 10, 419 // CHECK-NEXT: "col": 10, 420 // CHECK-NEXT: "tokLen": 1 421 // CHECK-NEXT: } 422 // CHECK-NEXT: }, 423 // CHECK-NEXT: "name": "c", 424 // CHECK-NEXT: "inner": [ 425 // CHECK-NEXT: { 426 // CHECK-NEXT: "id": "0x{{.*}}", 427 // CHECK-NEXT: "kind": "TemplateTypeParmDecl", 428 // CHECK-NEXT: "loc": { 429 // CHECK-NEXT: "line": 9, 430 // CHECK-NEXT: "col": 17, 431 // CHECK-NEXT: "tokLen": 2 432 // CHECK-NEXT: }, 433 // CHECK-NEXT: "range": { 434 // CHECK-NEXT: "begin": { 435 // CHECK-NEXT: "col": 11, 436 // CHECK-NEXT: "tokLen": 5 437 // CHECK-NEXT: }, 438 // CHECK-NEXT: "end": { 439 // CHECK-NEXT: "col": 17, 440 // CHECK-NEXT: "tokLen": 2 441 // CHECK-NEXT: } 442 // CHECK-NEXT: }, 443 // CHECK-NEXT: "isReferenced": true, 444 // CHECK-NEXT: "name": "Ty", 445 // CHECK-NEXT: "tagUsed": "class", 446 // CHECK-NEXT: "depth": 0, 447 // CHECK-NEXT: "index": 0 448 // CHECK-NEXT: }, 449 // CHECK-NEXT: { 450 // CHECK-NEXT: "id": "0x{{.*}}", 451 // CHECK-NEXT: "kind": "TemplateTypeParmDecl", 452 // CHECK-NEXT: "loc": { 453 // CHECK-NEXT: "col": 30, 454 // CHECK-NEXT: "tokLen": 2 455 // CHECK-NEXT: }, 456 // CHECK-NEXT: "range": { 457 // CHECK-NEXT: "begin": { 458 // CHECK-NEXT: "col": 21, 459 // CHECK-NEXT: "tokLen": 8 460 // CHECK-NEXT: }, 461 // CHECK-NEXT: "end": { 462 // CHECK-NEXT: "col": 30, 463 // CHECK-NEXT: "tokLen": 2 464 // CHECK-NEXT: } 465 // CHECK-NEXT: }, 466 // CHECK-NEXT: "name": "Uy", 467 // CHECK-NEXT: "tagUsed": "typename", 468 // CHECK-NEXT: "depth": 0, 469 // CHECK-NEXT: "index": 1 470 // CHECK-NEXT: }, 471 // CHECK-NEXT: { 472 // CHECK-NEXT: "id": "0x{{.*}}", 473 // CHECK-NEXT: "kind": "FunctionDecl", 474 // CHECK-NEXT: "loc": { 475 // CHECK-NEXT: "line": 10, 476 // CHECK-NEXT: "col": 6, 477 // CHECK-NEXT: "tokLen": 1 478 // CHECK-NEXT: }, 479 // CHECK-NEXT: "range": { 480 // CHECK-NEXT: "begin": { 481 // CHECK-NEXT: "col": 1, 482 // CHECK-NEXT: "tokLen": 4 483 // CHECK-NEXT: }, 484 // CHECK-NEXT: "end": { 485 // CHECK-NEXT: "col": 10, 486 // CHECK-NEXT: "tokLen": 1 487 // CHECK-NEXT: } 488 // CHECK-NEXT: }, 489 // CHECK-NEXT: "name": "c", 490 // CHECK-NEXT: "type": { 491 // CHECK-NEXT: "qualType": "void (Ty)" 492 // CHECK-NEXT: }, 493 // CHECK-NEXT: "inner": [ 494 // CHECK-NEXT: { 495 // CHECK-NEXT: "id": "0x{{.*}}", 496 // CHECK-NEXT: "kind": "ParmVarDecl", 497 // CHECK-NEXT: "loc": { 498 // CHECK-NEXT: "col": 10, 499 // CHECK-NEXT: "tokLen": 1 500 // CHECK-NEXT: }, 501 // CHECK-NEXT: "range": { 502 // CHECK-NEXT: "begin": { 503 // CHECK-NEXT: "col": 8, 504 // CHECK-NEXT: "tokLen": 2 505 // CHECK-NEXT: }, 506 // CHECK-NEXT: "end": { 507 // CHECK-NEXT: "col": 8, 508 // CHECK-NEXT: "tokLen": 2 509 // CHECK-NEXT: } 510 // CHECK-NEXT: }, 511 // CHECK-NEXT: "type": { 512 // CHECK-NEXT: "qualType": "Ty" 513 // CHECK-NEXT: } 514 // CHECK-NEXT: } 515 // CHECK-NEXT: ] 516 // CHECK-NEXT: }, 517 // CHECK-NEXT: { 518 // CHECK-NEXT: "id": "0x{{.*}}", 519 // CHECK-NEXT: "kind": "FunctionDecl", 520 // CHECK-NEXT: "name": "c", 521 // CHECK-NEXT: "type": { 522 // CHECK-NEXT: "qualType": "void (float)" 523 // CHECK-NEXT: } 524 // CHECK-NEXT: } 525 // CHECK-NEXT: ] 526 // CHECK-NEXT: }, 527 // CHECK-NEXT: { 528 // CHECK-NEXT: "id": "0x{{.*}}", 529 // CHECK-NEXT: "kind": "FunctionDecl", 530 // CHECK-NEXT: "loc": { 531 // CHECK-NEXT: "line": 13, 532 // CHECK-NEXT: "col": 6, 533 // CHECK-NEXT: "tokLen": 1 534 // CHECK-NEXT: }, 535 // CHECK-NEXT: "range": { 536 // CHECK-NEXT: "begin": { 537 // CHECK-NEXT: "line": 12, 538 // CHECK-NEXT: "col": 1, 539 // CHECK-NEXT: "tokLen": 8 540 // CHECK-NEXT: }, 541 // CHECK-NEXT: "end": { 542 // CHECK-NEXT: "line": 13, 543 // CHECK-NEXT: "col": 25, 544 // CHECK-NEXT: "tokLen": 1 545 // CHECK-NEXT: } 546 // CHECK-NEXT: }, 547 // CHECK-NEXT: "previousDecl": "0x{{.*}}", 548 // CHECK-NEXT: "name": "c", 549 // CHECK-NEXT: "type": { 550 // CHECK-NEXT: "qualType": "void (float)" 551 // CHECK-NEXT: }, 552 // CHECK-NEXT: "inner": [ 553 // CHECK-NEXT: { 554 // CHECK-NEXT: "kind": "TemplateArgument", 555 // CHECK-NEXT: "type": { 556 // CHECK-NEXT: "qualType": "float" 557 // CHECK-NEXT: } 558 // CHECK-NEXT: }, 559 // CHECK-NEXT: { 560 // CHECK-NEXT: "kind": "TemplateArgument", 561 // CHECK-NEXT: "type": { 562 // CHECK-NEXT: "qualType": "int" 563 // CHECK-NEXT: } 564 // CHECK-NEXT: }, 565 // CHECK-NEXT: { 566 // CHECK-NEXT: "id": "0x{{.*}}", 567 // CHECK-NEXT: "kind": "ParmVarDecl", 568 // CHECK-NEXT: "loc": { 569 // CHECK-NEXT: "col": 25, 570 // CHECK-NEXT: "tokLen": 1 571 // CHECK-NEXT: }, 572 // CHECK-NEXT: "range": { 573 // CHECK-NEXT: "begin": { 574 // CHECK-NEXT: "col": 20, 575 // CHECK-NEXT: "tokLen": 5 576 // CHECK-NEXT: }, 577 // CHECK-NEXT: "end": { 578 // CHECK-NEXT: "col": 20, 579 // CHECK-NEXT: "tokLen": 5 580 // CHECK-NEXT: } 581 // CHECK-NEXT: }, 582 // CHECK-NEXT: "type": { 583 // CHECK-NEXT: "qualType": "float" 584 // CHECK-NEXT: } 585 // CHECK-NEXT: } 586 // CHECK-NEXT: ] 587 // CHECK-NEXT: }, 588 // CHECK-NEXT: { 589 // CHECK-NEXT: "id": "0x{{.*}}", 590 // CHECK-NEXT: "kind": "FunctionTemplateDecl", 591 // CHECK-NEXT: "loc": { 592 // CHECK-NEXT: "line": 16, 593 // CHECK-NEXT: "col": 6, 594 // CHECK-NEXT: "tokLen": 1 595 // CHECK-NEXT: }, 596 // CHECK-NEXT: "range": { 597 // CHECK-NEXT: "begin": { 598 // CHECK-NEXT: "line": 15, 599 // CHECK-NEXT: "col": 1, 600 // CHECK-NEXT: "tokLen": 8 601 // CHECK-NEXT: }, 602 // CHECK-NEXT: "end": { 603 // CHECK-NEXT: "line": 16, 604 // CHECK-NEXT: "col": 18, 605 // CHECK-NEXT: "tokLen": 1 606 // CHECK-NEXT: } 607 // CHECK-NEXT: }, 608 // CHECK-NEXT: "name": "d", 609 // CHECK-NEXT: "inner": [ 610 // CHECK-NEXT: { 611 // CHECK-NEXT: "id": "0x{{.*}}", 612 // CHECK-NEXT: "kind": "TemplateTypeParmDecl", 613 // CHECK-NEXT: "loc": { 614 // CHECK-NEXT: "line": 15, 615 // CHECK-NEXT: "col": 20, 616 // CHECK-NEXT: "tokLen": 2 617 // CHECK-NEXT: }, 618 // CHECK-NEXT: "range": { 619 // CHECK-NEXT: "begin": { 620 // CHECK-NEXT: "col": 11, 621 // CHECK-NEXT: "tokLen": 8 622 // CHECK-NEXT: }, 623 // CHECK-NEXT: "end": { 624 // CHECK-NEXT: "col": 20, 625 // CHECK-NEXT: "tokLen": 2 626 // CHECK-NEXT: } 627 // CHECK-NEXT: }, 628 // CHECK-NEXT: "isReferenced": true, 629 // CHECK-NEXT: "name": "Ty", 630 // CHECK-NEXT: "tagUsed": "typename", 631 // CHECK-NEXT: "depth": 0, 632 // CHECK-NEXT: "index": 0 633 // CHECK-NEXT: }, 634 // CHECK-NEXT: { 635 // CHECK-NEXT: "id": "0x{{.*}}", 636 // CHECK-NEXT: "kind": "TemplateTemplateParmDecl", 637 // CHECK-NEXT: "loc": { 638 // CHECK-NEXT: "col": 52, 639 // CHECK-NEXT: "tokLen": 2 640 // CHECK-NEXT: }, 641 // CHECK-NEXT: "range": { 642 // CHECK-NEXT: "begin": { 643 // CHECK-NEXT: "col": 24, 644 // CHECK-NEXT: "tokLen": 8 645 // CHECK-NEXT: }, 646 // CHECK-NEXT: "end": { 647 // CHECK-NEXT: "col": 52, 648 // CHECK-NEXT: "tokLen": 2 649 // CHECK-NEXT: } 650 // CHECK-NEXT: }, 651 // CHECK-NEXT: "name": "Uy", 652 // CHECK-NEXT: "depth": 0, 653 // CHECK-NEXT: "index": 1, 654 // CHECK-NEXT: "inner": [ 655 // CHECK-NEXT: { 656 // CHECK-NEXT: "id": "0x{{.*}}", 657 // CHECK-NEXT: "kind": "TemplateTypeParmDecl", 658 // CHECK-NEXT: "loc": { 659 // CHECK-NEXT: "col": 41, 660 // CHECK-NEXT: "tokLen": 1 661 // CHECK-NEXT: }, 662 // CHECK-NEXT: "range": { 663 // CHECK-NEXT: "begin": { 664 // CHECK-NEXT: "col": 33, 665 // CHECK-NEXT: "tokLen": 8 666 // CHECK-NEXT: }, 667 // CHECK-NEXT: "end": { 668 // CHECK-NEXT: "col": 33, 669 // CHECK-NEXT: "tokLen": 8 670 // CHECK-NEXT: } 671 // CHECK-NEXT: }, 672 // CHECK-NEXT: "tagUsed": "typename", 673 // CHECK-NEXT: "depth": 1, 674 // CHECK-NEXT: "index": 0 675 // CHECK-NEXT: } 676 // CHECK-NEXT: ] 677 // CHECK-NEXT: }, 678 // CHECK-NEXT: { 679 // CHECK-NEXT: "id": "0x{{.*}}", 680 // CHECK-NEXT: "kind": "FunctionDecl", 681 // CHECK-NEXT: "loc": { 682 // CHECK-NEXT: "line": 16, 683 // CHECK-NEXT: "col": 6, 684 // CHECK-NEXT: "tokLen": 1 685 // CHECK-NEXT: }, 686 // CHECK-NEXT: "range": { 687 // CHECK-NEXT: "begin": { 688 // CHECK-NEXT: "col": 1, 689 // CHECK-NEXT: "tokLen": 4 690 // CHECK-NEXT: }, 691 // CHECK-NEXT: "end": { 692 // CHECK-NEXT: "col": 18, 693 // CHECK-NEXT: "tokLen": 1 694 // CHECK-NEXT: } 695 // CHECK-NEXT: }, 696 // CHECK-NEXT: "name": "d", 697 // CHECK-NEXT: "type": { 698 // CHECK-NEXT: "qualType": "void (Ty, Uy<Ty>)" 699 // CHECK-NEXT: }, 700 // CHECK-NEXT: "inner": [ 701 // CHECK-NEXT: { 702 // CHECK-NEXT: "id": "0x{{.*}}", 703 // CHECK-NEXT: "kind": "ParmVarDecl", 704 // CHECK-NEXT: "loc": { 705 // CHECK-NEXT: "col": 10, 706 // CHECK-NEXT: "tokLen": 1 707 // CHECK-NEXT: }, 708 // CHECK-NEXT: "range": { 709 // CHECK-NEXT: "begin": { 710 // CHECK-NEXT: "col": 8, 711 // CHECK-NEXT: "tokLen": 2 712 // CHECK-NEXT: }, 713 // CHECK-NEXT: "end": { 714 // CHECK-NEXT: "col": 8, 715 // CHECK-NEXT: "tokLen": 2 716 // CHECK-NEXT: } 717 // CHECK-NEXT: }, 718 // CHECK-NEXT: "type": { 719 // CHECK-NEXT: "qualType": "Ty" 720 // CHECK-NEXT: } 721 // CHECK-NEXT: }, 722 // CHECK-NEXT: { 723 // CHECK-NEXT: "id": "0x{{.*}}", 724 // CHECK-NEXT: "kind": "ParmVarDecl", 725 // CHECK-NEXT: "loc": { 726 // CHECK-NEXT: "col": 18, 727 // CHECK-NEXT: "tokLen": 1 728 // CHECK-NEXT: }, 729 // CHECK-NEXT: "range": { 730 // CHECK-NEXT: "begin": { 731 // CHECK-NEXT: "col": 12, 732 // CHECK-NEXT: "tokLen": 2 733 // CHECK-NEXT: }, 734 // CHECK-NEXT: "end": { 735 // CHECK-NEXT: "col": 17, 736 // CHECK-NEXT: "tokLen": 1 737 // CHECK-NEXT: } 738 // CHECK-NEXT: }, 739 // CHECK-NEXT: "type": { 740 // CHECK-NEXT: "qualType": "Uy<Ty>" 741 // CHECK-NEXT: } 742 // CHECK-NEXT: } 743 // CHECK-NEXT: ] 744 // CHECK-NEXT: } 745 // CHECK-NEXT: ] 746 // CHECK-NEXT: }, 747 // CHECK-NEXT: { 748 // CHECK-NEXT: "id": "0x{{.*}}", 749 // CHECK-NEXT: "kind": "FunctionTemplateDecl", 750 // CHECK-NEXT: "loc": { 751 // CHECK-NEXT: "line": 19, 752 // CHECK-NEXT: "col": 6, 753 // CHECK-NEXT: "tokLen": 1 754 // CHECK-NEXT: }, 755 // CHECK-NEXT: "range": { 756 // CHECK-NEXT: "begin": { 757 // CHECK-NEXT: "line": 18, 758 // CHECK-NEXT: "col": 1, 759 // CHECK-NEXT: "tokLen": 8 760 // CHECK-NEXT: }, 761 // CHECK-NEXT: "end": { 762 // CHECK-NEXT: "line": 19, 763 // CHECK-NEXT: "col": 10, 764 // CHECK-NEXT: "tokLen": 1 765 // CHECK-NEXT: } 766 // CHECK-NEXT: }, 767 // CHECK-NEXT: "name": "e", 768 // CHECK-NEXT: "inner": [ 769 // CHECK-NEXT: { 770 // CHECK-NEXT: "id": "0x{{.*}}", 771 // CHECK-NEXT: "kind": "TemplateTypeParmDecl", 772 // CHECK-NEXT: "loc": { 773 // CHECK-NEXT: "line": 18, 774 // CHECK-NEXT: "col": 17, 775 // CHECK-NEXT: "tokLen": 2 776 // CHECK-NEXT: }, 777 // CHECK-NEXT: "range": { 778 // CHECK-NEXT: "begin": { 779 // CHECK-NEXT: "col": 11, 780 // CHECK-NEXT: "tokLen": 5 781 // CHECK-NEXT: }, 782 // CHECK-NEXT: "end": { 783 // CHECK-NEXT: "col": 17, 784 // CHECK-NEXT: "tokLen": 2 785 // CHECK-NEXT: } 786 // CHECK-NEXT: }, 787 // CHECK-NEXT: "isReferenced": true, 788 // CHECK-NEXT: "name": "Ty", 789 // CHECK-NEXT: "tagUsed": "class", 790 // CHECK-NEXT: "depth": 0, 791 // CHECK-NEXT: "index": 0 792 // CHECK-NEXT: }, 793 // CHECK-NEXT: { 794 // CHECK-NEXT: "id": "0x{{.*}}", 795 // CHECK-NEXT: "kind": "FunctionDecl", 796 // CHECK-NEXT: "loc": { 797 // CHECK-NEXT: "line": 19, 798 // CHECK-NEXT: "col": 6, 799 // CHECK-NEXT: "tokLen": 1 800 // CHECK-NEXT: }, 801 // CHECK-NEXT: "range": { 802 // CHECK-NEXT: "begin": { 803 // CHECK-NEXT: "col": 1, 804 // CHECK-NEXT: "tokLen": 4 805 // CHECK-NEXT: }, 806 // CHECK-NEXT: "end": { 807 // CHECK-NEXT: "col": 10, 808 // CHECK-NEXT: "tokLen": 1 809 // CHECK-NEXT: } 810 // CHECK-NEXT: }, 811 // CHECK-NEXT: "name": "e", 812 // CHECK-NEXT: "type": { 813 // CHECK-NEXT: "qualType": "void (Ty)" 814 // CHECK-NEXT: }, 815 // CHECK-NEXT: "inner": [ 816 // CHECK-NEXT: { 817 // CHECK-NEXT: "id": "0x{{.*}}", 818 // CHECK-NEXT: "kind": "ParmVarDecl", 819 // CHECK-NEXT: "loc": { 820 // CHECK-NEXT: "col": 10, 821 // CHECK-NEXT: "tokLen": 1 822 // CHECK-NEXT: }, 823 // CHECK-NEXT: "range": { 824 // CHECK-NEXT: "begin": { 825 // CHECK-NEXT: "col": 8, 826 // CHECK-NEXT: "tokLen": 2 827 // CHECK-NEXT: }, 828 // CHECK-NEXT: "end": { 829 // CHECK-NEXT: "col": 8, 830 // CHECK-NEXT: "tokLen": 2 831 // CHECK-NEXT: } 832 // CHECK-NEXT: }, 833 // CHECK-NEXT: "type": { 834 // CHECK-NEXT: "qualType": "Ty" 835 // CHECK-NEXT: } 836 // CHECK-NEXT: } 837 // CHECK-NEXT: ] 838 // CHECK-NEXT: } 839 // CHECK-NEXT: ] 840 // CHECK-NEXT: }, 841 // CHECK-NEXT: { 842 // CHECK-NEXT: "id": "0x{{.*}}", 843 // CHECK-NEXT: "kind": "FunctionTemplateDecl", 844 // CHECK-NEXT: "loc": { 845 // CHECK-NEXT: "line": 22, 846 // CHECK-NEXT: "col": 6, 847 // CHECK-NEXT: "tokLen": 1 848 // CHECK-NEXT: }, 849 // CHECK-NEXT: "range": { 850 // CHECK-NEXT: "begin": { 851 // CHECK-NEXT: "line": 21, 852 // CHECK-NEXT: "col": 1, 853 // CHECK-NEXT: "tokLen": 8 854 // CHECK-NEXT: }, 855 // CHECK-NEXT: "end": { 856 // CHECK-NEXT: "line": 22, 857 // CHECK-NEXT: "col": 17, 858 // CHECK-NEXT: "tokLen": 1 859 // CHECK-NEXT: } 860 // CHECK-NEXT: }, 861 // CHECK-NEXT: "name": "f", 862 // CHECK-NEXT: "inner": [ 863 // CHECK-NEXT: { 864 // CHECK-NEXT: "id": "0x{{.*}}", 865 // CHECK-NEXT: "kind": "NonTypeTemplateParmDecl", 866 // CHECK-NEXT: "loc": { 867 // CHECK-NEXT: "line": 21, 868 // CHECK-NEXT: "col": 15, 869 // CHECK-NEXT: "tokLen": 1 870 // CHECK-NEXT: }, 871 // CHECK-NEXT: "range": { 872 // CHECK-NEXT: "begin": { 873 // CHECK-NEXT: "col": 11, 874 // CHECK-NEXT: "tokLen": 3 875 // CHECK-NEXT: }, 876 // CHECK-NEXT: "end": { 877 // CHECK-NEXT: "col": 15, 878 // CHECK-NEXT: "tokLen": 1 879 // CHECK-NEXT: } 880 // CHECK-NEXT: }, 881 // CHECK-NEXT: "isReferenced": true, 882 // CHECK-NEXT: "name": "N", 883 // CHECK-NEXT: "type": { 884 // CHECK-NEXT: "qualType": "int" 885 // CHECK-NEXT: }, 886 // CHECK-NEXT: "depth": 0, 887 // CHECK-NEXT: "index": 0 888 // CHECK-NEXT: }, 889 // CHECK-NEXT: { 890 // CHECK-NEXT: "id": "0x{{.*}}", 891 // CHECK-NEXT: "kind": "FunctionDecl", 892 // CHECK-NEXT: "loc": { 893 // CHECK-NEXT: "line": 22, 894 // CHECK-NEXT: "col": 6, 895 // CHECK-NEXT: "tokLen": 1 896 // CHECK-NEXT: }, 897 // CHECK-NEXT: "range": { 898 // CHECK-NEXT: "begin": { 899 // CHECK-NEXT: "col": 1, 900 // CHECK-NEXT: "tokLen": 4 901 // CHECK-NEXT: }, 902 // CHECK-NEXT: "end": { 903 // CHECK-NEXT: "col": 17, 904 // CHECK-NEXT: "tokLen": 1 905 // CHECK-NEXT: } 906 // CHECK-NEXT: }, 907 // CHECK-NEXT: "name": "f", 908 // CHECK-NEXT: "type": { 909 // CHECK-NEXT: "qualType": "void (int)" 910 // CHECK-NEXT: }, 911 // CHECK-NEXT: "inner": [ 912 // CHECK-NEXT: { 913 // CHECK-NEXT: "id": "0x{{.*}}", 914 // CHECK-NEXT: "kind": "ParmVarDecl", 915 // CHECK-NEXT: "loc": { 916 // CHECK-NEXT: "col": 12, 917 // CHECK-NEXT: "tokLen": 1 918 // CHECK-NEXT: }, 919 // CHECK-NEXT: "range": { 920 // CHECK-NEXT: "begin": { 921 // CHECK-NEXT: "col": 8, 922 // CHECK-NEXT: "tokLen": 3 923 // CHECK-NEXT: }, 924 // CHECK-NEXT: "end": { 925 // CHECK-NEXT: "col": 16, 926 // CHECK-NEXT: "tokLen": 1 927 // CHECK-NEXT: } 928 // CHECK-NEXT: }, 929 // CHECK-NEXT: "name": "i", 930 // CHECK-NEXT: "type": { 931 // CHECK-NEXT: "qualType": "int" 932 // CHECK-NEXT: }, 933 // CHECK-NEXT: "init": "c", 934 // CHECK-NEXT: "inner": [ 935 // CHECK-NEXT: { 936 // CHECK-NEXT: "id": "0x{{.*}}", 937 // CHECK-NEXT: "kind": "DeclRefExpr", 938 // CHECK-NEXT: "range": { 939 // CHECK-NEXT: "begin": { 940 // CHECK-NEXT: "col": 16, 941 // CHECK-NEXT: "tokLen": 1 942 // CHECK-NEXT: }, 943 // CHECK-NEXT: "end": { 944 // CHECK-NEXT: "col": 16, 945 // CHECK-NEXT: "tokLen": 1 946 // CHECK-NEXT: } 947 // CHECK-NEXT: }, 948 // CHECK-NEXT: "type": { 949 // CHECK-NEXT: "qualType": "int" 950 // CHECK-NEXT: }, 951 // CHECK-NEXT: "valueCategory": "rvalue", 952 // CHECK-NEXT: "referencedDecl": { 953 // CHECK-NEXT: "id": "0x{{.*}}", 954 // CHECK-NEXT: "kind": "NonTypeTemplateParmDecl", 955 // CHECK-NEXT: "name": "N", 956 // CHECK-NEXT: "type": { 957 // CHECK-NEXT: "qualType": "int" 958 // CHECK-NEXT: } 959 // CHECK-NEXT: } 960 // CHECK-NEXT: } 961 // CHECK-NEXT: ] 962 // CHECK-NEXT: } 963 // CHECK-NEXT: ] 964 // CHECK-NEXT: } 965 // CHECK-NEXT: ] 966 // CHECK-NEXT: }, 967 // CHECK-NEXT: { 968 // CHECK-NEXT: "id": "0x{{.*}}", 969 // CHECK-NEXT: "kind": "FunctionTemplateDecl", 970 // CHECK-NEXT: "loc": { 971 // CHECK-NEXT: "line": 25, 972 // CHECK-NEXT: "col": 6, 973 // CHECK-NEXT: "tokLen": 1 974 // CHECK-NEXT: }, 975 // CHECK-NEXT: "range": { 976 // CHECK-NEXT: "begin": { 977 // CHECK-NEXT: "line": 24, 978 // CHECK-NEXT: "col": 1, 979 // CHECK-NEXT: "tokLen": 8 980 // CHECK-NEXT: }, 981 // CHECK-NEXT: "end": { 982 // CHECK-NEXT: "line": 25, 983 // CHECK-NEXT: "col": 10, 984 // CHECK-NEXT: "tokLen": 1 985 // CHECK-NEXT: } 986 // CHECK-NEXT: }, 987 // CHECK-NEXT: "name": "g", 988 // CHECK-NEXT: "inner": [ 989 // CHECK-NEXT: { 990 // CHECK-NEXT: "id": "0x{{.*}}", 991 // CHECK-NEXT: "kind": "TemplateTypeParmDecl", 992 // CHECK-NEXT: "loc": { 993 // CHECK-NEXT: "line": 24, 994 // CHECK-NEXT: "col": 20, 995 // CHECK-NEXT: "tokLen": 2 996 // CHECK-NEXT: }, 997 // CHECK-NEXT: "range": { 998 // CHECK-NEXT: "begin": { 999 // CHECK-NEXT: "col": 11, 1000 // CHECK-NEXT: "tokLen": 8 1001 // CHECK-NEXT: }, 1002 // CHECK-NEXT: "end": { 1003 // CHECK-NEXT: "col": 25, 1004 // CHECK-NEXT: "tokLen": 3 1005 // CHECK-NEXT: } 1006 // CHECK-NEXT: }, 1007 // CHECK-NEXT: "isReferenced": true, 1008 // CHECK-NEXT: "name": "Ty", 1009 // CHECK-NEXT: "tagUsed": "typename", 1010 // CHECK-NEXT: "depth": 0, 1011 // CHECK-NEXT: "index": 0, 1012 // CHECK-NEXT: "defaultArg": { 1013 // CHECK-NEXT: "kind": "TemplateArgument", 1014 // CHECK-NEXT: "type": { 1015 // CHECK-NEXT: "qualType": "int" 1016 // CHECK-NEXT: } 1017 // CHECK-NEXT: }, 1018 // CHECK-NEXT: "inner": [ 1019 // CHECK-NEXT: { 1020 // CHECK-NEXT: "kind": "TemplateArgument", 1021 // CHECK-NEXT: "type": { 1022 // CHECK-NEXT: "qualType": "int" 1023 // CHECK-NEXT: } 1024 // CHECK-NEXT: } 1025 // CHECK-NEXT: ] 1026 // CHECK-NEXT: }, 1027 // CHECK-NEXT: { 1028 // CHECK-NEXT: "id": "0x{{.*}}", 1029 // CHECK-NEXT: "kind": "FunctionDecl", 1030 // CHECK-NEXT: "loc": { 1031 // CHECK-NEXT: "line": 25, 1032 // CHECK-NEXT: "col": 6, 1033 // CHECK-NEXT: "tokLen": 1 1034 // CHECK-NEXT: }, 1035 // CHECK-NEXT: "range": { 1036 // CHECK-NEXT: "begin": { 1037 // CHECK-NEXT: "col": 1, 1038 // CHECK-NEXT: "tokLen": 4 1039 // CHECK-NEXT: }, 1040 // CHECK-NEXT: "end": { 1041 // CHECK-NEXT: "col": 10, 1042 // CHECK-NEXT: "tokLen": 1 1043 // CHECK-NEXT: } 1044 // CHECK-NEXT: }, 1045 // CHECK-NEXT: "name": "g", 1046 // CHECK-NEXT: "type": { 1047 // CHECK-NEXT: "qualType": "void (Ty)" 1048 // CHECK-NEXT: }, 1049 // CHECK-NEXT: "inner": [ 1050 // CHECK-NEXT: { 1051 // CHECK-NEXT: "id": "0x{{.*}}", 1052 // CHECK-NEXT: "kind": "ParmVarDecl", 1053 // CHECK-NEXT: "loc": { 1054 // CHECK-NEXT: "col": 10, 1055 // CHECK-NEXT: "tokLen": 1 1056 // CHECK-NEXT: }, 1057 // CHECK-NEXT: "range": { 1058 // CHECK-NEXT: "begin": { 1059 // CHECK-NEXT: "col": 8, 1060 // CHECK-NEXT: "tokLen": 2 1061 // CHECK-NEXT: }, 1062 // CHECK-NEXT: "end": { 1063 // CHECK-NEXT: "col": 8, 1064 // CHECK-NEXT: "tokLen": 2 1065 // CHECK-NEXT: } 1066 // CHECK-NEXT: }, 1067 // CHECK-NEXT: "type": { 1068 // CHECK-NEXT: "qualType": "Ty" 1069 // CHECK-NEXT: } 1070 // CHECK-NEXT: } 1071 // CHECK-NEXT: ] 1072 // CHECK-NEXT: } 1073 // CHECK-NEXT: ] 1074 // CHECK-NEXT: }, 1075 // CHECK-NEXT: { 1076 // CHECK-NEXT: "id": "0x{{.*}}", 1077 // CHECK-NEXT: "kind": "FunctionTemplateDecl", 1078 // CHECK-NEXT: "loc": { 1079 // CHECK-NEXT: "line": 28, 1080 // CHECK-NEXT: "col": 6, 1081 // CHECK-NEXT: "tokLen": 1 1082 // CHECK-NEXT: }, 1083 // CHECK-NEXT: "range": { 1084 // CHECK-NEXT: "begin": { 1085 // CHECK-NEXT: "line": 27, 1086 // CHECK-NEXT: "col": 1, 1087 // CHECK-NEXT: "tokLen": 8 1088 // CHECK-NEXT: }, 1089 // CHECK-NEXT: "end": { 1090 // CHECK-NEXT: "line": 28, 1091 // CHECK-NEXT: "col": 8, 1092 // CHECK-NEXT: "tokLen": 1 1093 // CHECK-NEXT: } 1094 // CHECK-NEXT: }, 1095 // CHECK-NEXT: "name": "h", 1096 // CHECK-NEXT: "inner": [ 1097 // CHECK-NEXT: { 1098 // CHECK-NEXT: "id": "0x{{.*}}", 1099 // CHECK-NEXT: "kind": "TemplateTypeParmDecl", 1100 // CHECK-NEXT: "loc": { 1101 // CHECK-NEXT: "line": 27, 1102 // CHECK-NEXT: "col": 20, 1103 // CHECK-NEXT: "tokLen": 1 1104 // CHECK-NEXT: }, 1105 // CHECK-NEXT: "range": { 1106 // CHECK-NEXT: "begin": { 1107 // CHECK-NEXT: "col": 11, 1108 // CHECK-NEXT: "tokLen": 8 1109 // CHECK-NEXT: }, 1110 // CHECK-NEXT: "end": { 1111 // CHECK-NEXT: "col": 22, 1112 // CHECK-NEXT: "tokLen": 4 1113 // CHECK-NEXT: } 1114 // CHECK-NEXT: }, 1115 // CHECK-NEXT: "tagUsed": "typename", 1116 // CHECK-NEXT: "depth": 0, 1117 // CHECK-NEXT: "index": 0, 1118 // CHECK-NEXT: "defaultArg": { 1119 // CHECK-NEXT: "kind": "TemplateArgument", 1120 // CHECK-NEXT: "type": { 1121 // CHECK-NEXT: "qualType": "void" 1122 // CHECK-NEXT: } 1123 // CHECK-NEXT: }, 1124 // CHECK-NEXT: "inner": [ 1125 // CHECK-NEXT: { 1126 // CHECK-NEXT: "kind": "TemplateArgument", 1127 // CHECK-NEXT: "type": { 1128 // CHECK-NEXT: "qualType": "void" 1129 // CHECK-NEXT: } 1130 // CHECK-NEXT: } 1131 // CHECK-NEXT: ] 1132 // CHECK-NEXT: }, 1133 // CHECK-NEXT: { 1134 // CHECK-NEXT: "id": "0x{{.*}}", 1135 // CHECK-NEXT: "kind": "FunctionDecl", 1136 // CHECK-NEXT: "loc": { 1137 // CHECK-NEXT: "line": 28, 1138 // CHECK-NEXT: "col": 6, 1139 // CHECK-NEXT: "tokLen": 1 1140 // CHECK-NEXT: }, 1141 // CHECK-NEXT: "range": { 1142 // CHECK-NEXT: "begin": { 1143 // CHECK-NEXT: "col": 1, 1144 // CHECK-NEXT: "tokLen": 4 1145 // CHECK-NEXT: }, 1146 // CHECK-NEXT: "end": { 1147 // CHECK-NEXT: "col": 8, 1148 // CHECK-NEXT: "tokLen": 1 1149 // CHECK-NEXT: } 1150 // CHECK-NEXT: }, 1151 // CHECK-NEXT: "name": "h", 1152 // CHECK-NEXT: "type": { 1153 // CHECK-NEXT: "qualType": "void ()" 1154 // CHECK-NEXT: } 1155 // CHECK-NEXT: } 1156 // CHECK-NEXT: ] 1157 // CHECK-NEXT: }, 1158 // CHECK-NEXT: { 1159 // CHECK-NEXT: "id": "0x{{.*}}", 1160 // CHECK-NEXT: "kind": "ClassTemplateDecl", 1161 // CHECK-NEXT: "loc": { 1162 // CHECK-NEXT: "line": 31, 1163 // CHECK-NEXT: "col": 8, 1164 // CHECK-NEXT: "tokLen": 1 1165 // CHECK-NEXT: }, 1166 // CHECK-NEXT: "range": { 1167 // CHECK-NEXT: "begin": { 1168 // CHECK-NEXT: "line": 30, 1169 // CHECK-NEXT: "col": 1, 1170 // CHECK-NEXT: "tokLen": 8 1171 // CHECK-NEXT: }, 1172 // CHECK-NEXT: "end": { 1173 // CHECK-NEXT: "line": 31, 1174 // CHECK-NEXT: "col": 11, 1175 // CHECK-NEXT: "tokLen": 1 1176 // CHECK-NEXT: } 1177 // CHECK-NEXT: }, 1178 // CHECK-NEXT: "name": "R", 1179 // CHECK-NEXT: "inner": [ 1180 // CHECK-NEXT: { 1181 // CHECK-NEXT: "id": "0x{{.*}}", 1182 // CHECK-NEXT: "kind": "TemplateTypeParmDecl", 1183 // CHECK-NEXT: "loc": { 1184 // CHECK-NEXT: "line": 30, 1185 // CHECK-NEXT: "col": 20, 1186 // CHECK-NEXT: "tokLen": 2 1187 // CHECK-NEXT: }, 1188 // CHECK-NEXT: "range": { 1189 // CHECK-NEXT: "begin": { 1190 // CHECK-NEXT: "col": 11, 1191 // CHECK-NEXT: "tokLen": 8 1192 // CHECK-NEXT: }, 1193 // CHECK-NEXT: "end": { 1194 // CHECK-NEXT: "col": 20, 1195 // CHECK-NEXT: "tokLen": 2 1196 // CHECK-NEXT: } 1197 // CHECK-NEXT: }, 1198 // CHECK-NEXT: "name": "Ty", 1199 // CHECK-NEXT: "tagUsed": "typename", 1200 // CHECK-NEXT: "depth": 0, 1201 // CHECK-NEXT: "index": 0 1202 // CHECK-NEXT: }, 1203 // CHECK-NEXT: { 1204 // CHECK-NEXT: "id": "0x{{.*}}", 1205 // CHECK-NEXT: "kind": "CXXRecordDecl", 1206 // CHECK-NEXT: "loc": { 1207 // CHECK-NEXT: "line": 31, 1208 // CHECK-NEXT: "col": 8, 1209 // CHECK-NEXT: "tokLen": 1 1210 // CHECK-NEXT: }, 1211 // CHECK-NEXT: "range": { 1212 // CHECK-NEXT: "begin": { 1213 // CHECK-NEXT: "col": 1, 1214 // CHECK-NEXT: "tokLen": 6 1215 // CHECK-NEXT: }, 1216 // CHECK-NEXT: "end": { 1217 // CHECK-NEXT: "col": 11, 1218 // CHECK-NEXT: "tokLen": 1 1219 // CHECK-NEXT: } 1220 // CHECK-NEXT: }, 1221 // CHECK-NEXT: "name": "R", 1222 // CHECK-NEXT: "tagUsed": "struct", 1223 // CHECK-NEXT: "completeDefinition": true, 1224 // CHECK-NEXT: "definitionData": { 1225 // CHECK-NEXT: "canConstDefaultInit": true, 1226 // CHECK-NEXT: "copyAssign": { 1227 // CHECK-NEXT: "hasConstParam": true, 1228 // CHECK-NEXT: "implicitHasConstParam": true, 1229 // CHECK-NEXT: "needsImplicit": true, 1230 // CHECK-NEXT: "trivial": true 1231 // CHECK-NEXT: }, 1232 // CHECK-NEXT: "copyCtor": { 1233 // CHECK-NEXT: "hasConstParam": true, 1234 // CHECK-NEXT: "implicitHasConstParam": true, 1235 // CHECK-NEXT: "needsImplicit": true, 1236 // CHECK-NEXT: "simple": true, 1237 // CHECK-NEXT: "trivial": true 1238 // CHECK-NEXT: }, 1239 // CHECK-NEXT: "defaultCtor": { 1240 // CHECK-NEXT: "defaultedIsConstexpr": true, 1241 // CHECK-NEXT: "exists": true, 1242 // CHECK-NEXT: "isConstexpr": true, 1243 // CHECK-NEXT: "needsImplicit": true, 1244 // CHECK-NEXT: "trivial": true 1245 // CHECK-NEXT: }, 1246 // CHECK-NEXT: "dtor": { 1247 // CHECK-NEXT: "irrelevant": true, 1248 // CHECK-NEXT: "needsImplicit": true, 1249 // CHECK-NEXT: "simple": true, 1250 // CHECK-NEXT: "trivial": true 1251 // CHECK-NEXT: }, 1252 // CHECK-NEXT: "hasConstexprNonCopyMoveConstructor": true, 1253 // CHECK-NEXT: "isAggregate": true, 1254 // CHECK-NEXT: "isEmpty": true, 1255 // CHECK-NEXT: "isLiteral": true, 1256 // CHECK-NEXT: "isPOD": true, 1257 // CHECK-NEXT: "isStandardLayout": true, 1258 // CHECK-NEXT: "isTrivial": true, 1259 // CHECK-NEXT: "isTriviallyCopyable": true, 1260 // CHECK-NEXT: "moveAssign": { 1261 // CHECK-NEXT: "exists": true, 1262 // CHECK-NEXT: "needsImplicit": true, 1263 // CHECK-NEXT: "simple": true, 1264 // CHECK-NEXT: "trivial": true 1265 // CHECK-NEXT: }, 1266 // CHECK-NEXT: "moveCtor": { 1267 // CHECK-NEXT: "exists": true, 1268 // CHECK-NEXT: "needsImplicit": true, 1269 // CHECK-NEXT: "simple": true, 1270 // CHECK-NEXT: "trivial": true 1271 // CHECK-NEXT: } 1272 // CHECK-NEXT: }, 1273 // CHECK-NEXT: "inner": [ 1274 // CHECK-NEXT: { 1275 // CHECK-NEXT: "id": "0x{{.*}}", 1276 // CHECK-NEXT: "kind": "CXXRecordDecl", 1277 // CHECK-NEXT: "loc": { 1278 // CHECK-NEXT: "col": 8, 1279 // CHECK-NEXT: "tokLen": 1 1280 // CHECK-NEXT: }, 1281 // CHECK-NEXT: "range": { 1282 // CHECK-NEXT: "begin": { 1283 // CHECK-NEXT: "col": 1, 1284 // CHECK-NEXT: "tokLen": 6 1285 // CHECK-NEXT: }, 1286 // CHECK-NEXT: "end": { 1287 // CHECK-NEXT: "col": 8, 1288 // CHECK-NEXT: "tokLen": 1 1289 // CHECK-NEXT: } 1290 // CHECK-NEXT: }, 1291 // CHECK-NEXT: "isImplicit": true, 1292 // CHECK-NEXT: "name": "R", 1293 // CHECK-NEXT: "tagUsed": "struct" 1294 // CHECK-NEXT: } 1295 // CHECK-NEXT: ] 1296 // CHECK-NEXT: }, 1297 // CHECK-NEXT: { 1298 // CHECK-NEXT: "id": "0x{{.*}}", 1299 // CHECK-NEXT: "kind": "ClassTemplateSpecializationDecl", 1300 // CHECK-NEXT: "name": "R" 1301 // CHECK-NEXT: } 1302 // CHECK-NEXT: ] 1303 // CHECK-NEXT: }, 1304 // CHECK-NEXT: { 1305 // CHECK-NEXT: "id": "0x{{.*}}", 1306 // CHECK-NEXT: "kind": "ClassTemplateSpecializationDecl", 1307 // CHECK-NEXT: "loc": { 1308 // CHECK-NEXT: "line": 34, 1309 // CHECK-NEXT: "col": 8, 1310 // CHECK-NEXT: "tokLen": 1 1311 // CHECK-NEXT: }, 1312 // CHECK-NEXT: "range": { 1313 // CHECK-NEXT: "begin": { 1314 // CHECK-NEXT: "line": 33, 1315 // CHECK-NEXT: "col": 1, 1316 // CHECK-NEXT: "tokLen": 8 1317 // CHECK-NEXT: }, 1318 // CHECK-NEXT: "end": { 1319 // CHECK-NEXT: "line": 34, 1320 // CHECK-NEXT: "col": 16, 1321 // CHECK-NEXT: "tokLen": 1 1322 // CHECK-NEXT: } 1323 // CHECK-NEXT: }, 1324 // CHECK-NEXT: "name": "R", 1325 // CHECK-NEXT: "tagUsed": "struct", 1326 // CHECK-NEXT: "completeDefinition": true, 1327 // CHECK-NEXT: "definitionData": { 1328 // CHECK-NEXT: "canConstDefaultInit": true, 1329 // CHECK-NEXT: "canPassInRegisters": true, 1330 // CHECK-NEXT: "copyAssign": { 1331 // CHECK-NEXT: "hasConstParam": true, 1332 // CHECK-NEXT: "implicitHasConstParam": true, 1333 // CHECK-NEXT: "needsImplicit": true, 1334 // CHECK-NEXT: "trivial": true 1335 // CHECK-NEXT: }, 1336 // CHECK-NEXT: "copyCtor": { 1337 // CHECK-NEXT: "hasConstParam": true, 1338 // CHECK-NEXT: "implicitHasConstParam": true, 1339 // CHECK-NEXT: "needsImplicit": true, 1340 // CHECK-NEXT: "simple": true, 1341 // CHECK-NEXT: "trivial": true 1342 // CHECK-NEXT: }, 1343 // CHECK-NEXT: "defaultCtor": { 1344 // CHECK-NEXT: "defaultedIsConstexpr": true, 1345 // CHECK-NEXT: "exists": true, 1346 // CHECK-NEXT: "isConstexpr": true, 1347 // CHECK-NEXT: "needsImplicit": true, 1348 // CHECK-NEXT: "trivial": true 1349 // CHECK-NEXT: }, 1350 // CHECK-NEXT: "dtor": { 1351 // CHECK-NEXT: "irrelevant": true, 1352 // CHECK-NEXT: "needsImplicit": true, 1353 // CHECK-NEXT: "simple": true, 1354 // CHECK-NEXT: "trivial": true 1355 // CHECK-NEXT: }, 1356 // CHECK-NEXT: "hasConstexprNonCopyMoveConstructor": true, 1357 // CHECK-NEXT: "isAggregate": true, 1358 // CHECK-NEXT: "isEmpty": true, 1359 // CHECK-NEXT: "isLiteral": true, 1360 // CHECK-NEXT: "isPOD": true, 1361 // CHECK-NEXT: "isStandardLayout": true, 1362 // CHECK-NEXT: "isTrivial": true, 1363 // CHECK-NEXT: "isTriviallyCopyable": true, 1364 // CHECK-NEXT: "moveAssign": { 1365 // CHECK-NEXT: "exists": true, 1366 // CHECK-NEXT: "needsImplicit": true, 1367 // CHECK-NEXT: "simple": true, 1368 // CHECK-NEXT: "trivial": true 1369 // CHECK-NEXT: }, 1370 // CHECK-NEXT: "moveCtor": { 1371 // CHECK-NEXT: "exists": true, 1372 // CHECK-NEXT: "needsImplicit": true, 1373 // CHECK-NEXT: "simple": true, 1374 // CHECK-NEXT: "trivial": true 1375 // CHECK-NEXT: } 1376 // CHECK-NEXT: }, 1377 // CHECK-NEXT: "inner": [ 1378 // CHECK-NEXT: { 1379 // CHECK-NEXT: "kind": "TemplateArgument", 1380 // CHECK-NEXT: "type": { 1381 // CHECK-NEXT: "qualType": "int" 1382 // CHECK-NEXT: } 1383 // CHECK-NEXT: }, 1384 // CHECK-NEXT: { 1385 // CHECK-NEXT: "id": "0x{{.*}}", 1386 // CHECK-NEXT: "kind": "CXXRecordDecl", 1387 // CHECK-NEXT: "loc": { 1388 // CHECK-NEXT: "col": 8, 1389 // CHECK-NEXT: "tokLen": 1 1390 // CHECK-NEXT: }, 1391 // CHECK-NEXT: "range": { 1392 // CHECK-NEXT: "begin": { 1393 // CHECK-NEXT: "col": 1, 1394 // CHECK-NEXT: "tokLen": 6 1395 // CHECK-NEXT: }, 1396 // CHECK-NEXT: "end": { 1397 // CHECK-NEXT: "col": 8, 1398 // CHECK-NEXT: "tokLen": 1 1399 // CHECK-NEXT: } 1400 // CHECK-NEXT: }, 1401 // CHECK-NEXT: "isImplicit": true, 1402 // CHECK-NEXT: "name": "R", 1403 // CHECK-NEXT: "tagUsed": "struct" 1404 // CHECK-NEXT: } 1405 // CHECK-NEXT: ] 1406 // CHECK-NEXT: }, 1407 // CHECK-NEXT: { 1408 // CHECK-NEXT: "id": "0x{{.*}}", 1409 // CHECK-NEXT: "kind": "ClassTemplateDecl", 1410 // CHECK-NEXT: "loc": { 1411 // CHECK-NEXT: "line": 37, 1412 // CHECK-NEXT: "col": 8, 1413 // CHECK-NEXT: "tokLen": 1 1414 // CHECK-NEXT: }, 1415 // CHECK-NEXT: "range": { 1416 // CHECK-NEXT: "begin": { 1417 // CHECK-NEXT: "line": 36, 1418 // CHECK-NEXT: "col": 1, 1419 // CHECK-NEXT: "tokLen": 8 1420 // CHECK-NEXT: }, 1421 // CHECK-NEXT: "end": { 1422 // CHECK-NEXT: "line": 37, 1423 // CHECK-NEXT: "col": 11, 1424 // CHECK-NEXT: "tokLen": 1 1425 // CHECK-NEXT: } 1426 // CHECK-NEXT: }, 1427 // CHECK-NEXT: "name": "S", 1428 // CHECK-NEXT: "inner": [ 1429 // CHECK-NEXT: { 1430 // CHECK-NEXT: "id": "0x{{.*}}", 1431 // CHECK-NEXT: "kind": "TemplateTypeParmDecl", 1432 // CHECK-NEXT: "loc": { 1433 // CHECK-NEXT: "line": 36, 1434 // CHECK-NEXT: "col": 20, 1435 // CHECK-NEXT: "tokLen": 2 1436 // CHECK-NEXT: }, 1437 // CHECK-NEXT: "range": { 1438 // CHECK-NEXT: "begin": { 1439 // CHECK-NEXT: "col": 11, 1440 // CHECK-NEXT: "tokLen": 8 1441 // CHECK-NEXT: }, 1442 // CHECK-NEXT: "end": { 1443 // CHECK-NEXT: "col": 20, 1444 // CHECK-NEXT: "tokLen": 2 1445 // CHECK-NEXT: } 1446 // CHECK-NEXT: }, 1447 // CHECK-NEXT: "name": "Ty", 1448 // CHECK-NEXT: "tagUsed": "typename", 1449 // CHECK-NEXT: "depth": 0, 1450 // CHECK-NEXT: "index": 0 1451 // CHECK-NEXT: }, 1452 // CHECK-NEXT: { 1453 // CHECK-NEXT: "id": "0x{{.*}}", 1454 // CHECK-NEXT: "kind": "TemplateTypeParmDecl", 1455 // CHECK-NEXT: "loc": { 1456 // CHECK-NEXT: "col": 30, 1457 // CHECK-NEXT: "tokLen": 2 1458 // CHECK-NEXT: }, 1459 // CHECK-NEXT: "range": { 1460 // CHECK-NEXT: "begin": { 1461 // CHECK-NEXT: "col": 24, 1462 // CHECK-NEXT: "tokLen": 5 1463 // CHECK-NEXT: }, 1464 // CHECK-NEXT: "end": { 1465 // CHECK-NEXT: "col": 30, 1466 // CHECK-NEXT: "tokLen": 2 1467 // CHECK-NEXT: } 1468 // CHECK-NEXT: }, 1469 // CHECK-NEXT: "name": "Uy", 1470 // CHECK-NEXT: "tagUsed": "class", 1471 // CHECK-NEXT: "depth": 0, 1472 // CHECK-NEXT: "index": 1 1473 // CHECK-NEXT: }, 1474 // CHECK-NEXT: { 1475 // CHECK-NEXT: "id": "0x{{.*}}", 1476 // CHECK-NEXT: "kind": "CXXRecordDecl", 1477 // CHECK-NEXT: "loc": { 1478 // CHECK-NEXT: "line": 37, 1479 // CHECK-NEXT: "col": 8, 1480 // CHECK-NEXT: "tokLen": 1 1481 // CHECK-NEXT: }, 1482 // CHECK-NEXT: "range": { 1483 // CHECK-NEXT: "begin": { 1484 // CHECK-NEXT: "col": 1, 1485 // CHECK-NEXT: "tokLen": 6 1486 // CHECK-NEXT: }, 1487 // CHECK-NEXT: "end": { 1488 // CHECK-NEXT: "col": 11, 1489 // CHECK-NEXT: "tokLen": 1 1490 // CHECK-NEXT: } 1491 // CHECK-NEXT: }, 1492 // CHECK-NEXT: "name": "S", 1493 // CHECK-NEXT: "tagUsed": "struct", 1494 // CHECK-NEXT: "completeDefinition": true, 1495 // CHECK-NEXT: "definitionData": { 1496 // CHECK-NEXT: "canConstDefaultInit": true, 1497 // CHECK-NEXT: "copyAssign": { 1498 // CHECK-NEXT: "hasConstParam": true, 1499 // CHECK-NEXT: "implicitHasConstParam": true, 1500 // CHECK-NEXT: "needsImplicit": true, 1501 // CHECK-NEXT: "trivial": true 1502 // CHECK-NEXT: }, 1503 // CHECK-NEXT: "copyCtor": { 1504 // CHECK-NEXT: "hasConstParam": true, 1505 // CHECK-NEXT: "implicitHasConstParam": true, 1506 // CHECK-NEXT: "needsImplicit": true, 1507 // CHECK-NEXT: "simple": true, 1508 // CHECK-NEXT: "trivial": true 1509 // CHECK-NEXT: }, 1510 // CHECK-NEXT: "defaultCtor": { 1511 // CHECK-NEXT: "defaultedIsConstexpr": true, 1512 // CHECK-NEXT: "exists": true, 1513 // CHECK-NEXT: "isConstexpr": true, 1514 // CHECK-NEXT: "needsImplicit": true, 1515 // CHECK-NEXT: "trivial": true 1516 // CHECK-NEXT: }, 1517 // CHECK-NEXT: "dtor": { 1518 // CHECK-NEXT: "irrelevant": true, 1519 // CHECK-NEXT: "needsImplicit": true, 1520 // CHECK-NEXT: "simple": true, 1521 // CHECK-NEXT: "trivial": true 1522 // CHECK-NEXT: }, 1523 // CHECK-NEXT: "hasConstexprNonCopyMoveConstructor": true, 1524 // CHECK-NEXT: "isAggregate": true, 1525 // CHECK-NEXT: "isEmpty": true, 1526 // CHECK-NEXT: "isLiteral": true, 1527 // CHECK-NEXT: "isPOD": true, 1528 // CHECK-NEXT: "isStandardLayout": true, 1529 // CHECK-NEXT: "isTrivial": true, 1530 // CHECK-NEXT: "isTriviallyCopyable": true, 1531 // CHECK-NEXT: "moveAssign": { 1532 // CHECK-NEXT: "exists": true, 1533 // CHECK-NEXT: "needsImplicit": true, 1534 // CHECK-NEXT: "simple": true, 1535 // CHECK-NEXT: "trivial": true 1536 // CHECK-NEXT: }, 1537 // CHECK-NEXT: "moveCtor": { 1538 // CHECK-NEXT: "exists": true, 1539 // CHECK-NEXT: "needsImplicit": true, 1540 // CHECK-NEXT: "simple": true, 1541 // CHECK-NEXT: "trivial": true 1542 // CHECK-NEXT: } 1543 // CHECK-NEXT: }, 1544 // CHECK-NEXT: "inner": [ 1545 // CHECK-NEXT: { 1546 // CHECK-NEXT: "id": "0x{{.*}}", 1547 // CHECK-NEXT: "kind": "CXXRecordDecl", 1548 // CHECK-NEXT: "loc": { 1549 // CHECK-NEXT: "col": 8, 1550 // CHECK-NEXT: "tokLen": 1 1551 // CHECK-NEXT: }, 1552 // CHECK-NEXT: "range": { 1553 // CHECK-NEXT: "begin": { 1554 // CHECK-NEXT: "col": 1, 1555 // CHECK-NEXT: "tokLen": 6 1556 // CHECK-NEXT: }, 1557 // CHECK-NEXT: "end": { 1558 // CHECK-NEXT: "col": 8, 1559 // CHECK-NEXT: "tokLen": 1 1560 // CHECK-NEXT: } 1561 // CHECK-NEXT: }, 1562 // CHECK-NEXT: "isImplicit": true, 1563 // CHECK-NEXT: "name": "S", 1564 // CHECK-NEXT: "tagUsed": "struct" 1565 // CHECK-NEXT: } 1566 // CHECK-NEXT: ] 1567 // CHECK-NEXT: } 1568 // CHECK-NEXT: ] 1569 // CHECK-NEXT: }, 1570 // CHECK-NEXT: { 1571 // CHECK-NEXT: "id": "0x{{.*}}", 1572 // CHECK-NEXT: "kind": "ClassTemplatePartialSpecializationDecl", 1573 // CHECK-NEXT: "loc": { 1574 // CHECK-NEXT: "line": 40, 1575 // CHECK-NEXT: "col": 8, 1576 // CHECK-NEXT: "tokLen": 1 1577 // CHECK-NEXT: }, 1578 // CHECK-NEXT: "range": { 1579 // CHECK-NEXT: "begin": { 1580 // CHECK-NEXT: "line": 39, 1581 // CHECK-NEXT: "col": 1, 1582 // CHECK-NEXT: "tokLen": 8 1583 // CHECK-NEXT: }, 1584 // CHECK-NEXT: "end": { 1585 // CHECK-NEXT: "line": 40, 1586 // CHECK-NEXT: "col": 20, 1587 // CHECK-NEXT: "tokLen": 1 1588 // CHECK-NEXT: } 1589 // CHECK-NEXT: }, 1590 // CHECK-NEXT: "name": "S", 1591 // CHECK-NEXT: "tagUsed": "struct", 1592 // CHECK-NEXT: "completeDefinition": true, 1593 // CHECK-NEXT: "definitionData": { 1594 // CHECK-NEXT: "canConstDefaultInit": true, 1595 // CHECK-NEXT: "copyAssign": { 1596 // CHECK-NEXT: "hasConstParam": true, 1597 // CHECK-NEXT: "implicitHasConstParam": true, 1598 // CHECK-NEXT: "needsImplicit": true, 1599 // CHECK-NEXT: "trivial": true 1600 // CHECK-NEXT: }, 1601 // CHECK-NEXT: "copyCtor": { 1602 // CHECK-NEXT: "hasConstParam": true, 1603 // CHECK-NEXT: "implicitHasConstParam": true, 1604 // CHECK-NEXT: "needsImplicit": true, 1605 // CHECK-NEXT: "simple": true, 1606 // CHECK-NEXT: "trivial": true 1607 // CHECK-NEXT: }, 1608 // CHECK-NEXT: "defaultCtor": { 1609 // CHECK-NEXT: "defaultedIsConstexpr": true, 1610 // CHECK-NEXT: "exists": true, 1611 // CHECK-NEXT: "isConstexpr": true, 1612 // CHECK-NEXT: "needsImplicit": true, 1613 // CHECK-NEXT: "trivial": true 1614 // CHECK-NEXT: }, 1615 // CHECK-NEXT: "dtor": { 1616 // CHECK-NEXT: "irrelevant": true, 1617 // CHECK-NEXT: "needsImplicit": true, 1618 // CHECK-NEXT: "simple": true, 1619 // CHECK-NEXT: "trivial": true 1620 // CHECK-NEXT: }, 1621 // CHECK-NEXT: "hasConstexprNonCopyMoveConstructor": true, 1622 // CHECK-NEXT: "isAggregate": true, 1623 // CHECK-NEXT: "isEmpty": true, 1624 // CHECK-NEXT: "isLiteral": true, 1625 // CHECK-NEXT: "isPOD": true, 1626 // CHECK-NEXT: "isStandardLayout": true, 1627 // CHECK-NEXT: "isTrivial": true, 1628 // CHECK-NEXT: "isTriviallyCopyable": true, 1629 // CHECK-NEXT: "moveAssign": { 1630 // CHECK-NEXT: "exists": true, 1631 // CHECK-NEXT: "needsImplicit": true, 1632 // CHECK-NEXT: "simple": true, 1633 // CHECK-NEXT: "trivial": true 1634 // CHECK-NEXT: }, 1635 // CHECK-NEXT: "moveCtor": { 1636 // CHECK-NEXT: "exists": true, 1637 // CHECK-NEXT: "needsImplicit": true, 1638 // CHECK-NEXT: "simple": true, 1639 // CHECK-NEXT: "trivial": true 1640 // CHECK-NEXT: } 1641 // CHECK-NEXT: }, 1642 // CHECK-NEXT: "inner": [ 1643 // CHECK-NEXT: { 1644 // CHECK-NEXT: "kind": "TemplateArgument", 1645 // CHECK-NEXT: "type": { 1646 // CHECK-NEXT: "qualType": "type-parameter-0-0" 1647 // CHECK-NEXT: } 1648 // CHECK-NEXT: }, 1649 // CHECK-NEXT: { 1650 // CHECK-NEXT: "kind": "TemplateArgument", 1651 // CHECK-NEXT: "type": { 1652 // CHECK-NEXT: "qualType": "int" 1653 // CHECK-NEXT: } 1654 // CHECK-NEXT: }, 1655 // CHECK-NEXT: { 1656 // CHECK-NEXT: "id": "0x{{.*}}", 1657 // CHECK-NEXT: "kind": "TemplateTypeParmDecl", 1658 // CHECK-NEXT: "loc": { 1659 // CHECK-NEXT: "line": 39, 1660 // CHECK-NEXT: "col": 20, 1661 // CHECK-NEXT: "tokLen": 2 1662 // CHECK-NEXT: }, 1663 // CHECK-NEXT: "range": { 1664 // CHECK-NEXT: "begin": { 1665 // CHECK-NEXT: "col": 11, 1666 // CHECK-NEXT: "tokLen": 8 1667 // CHECK-NEXT: }, 1668 // CHECK-NEXT: "end": { 1669 // CHECK-NEXT: "col": 20, 1670 // CHECK-NEXT: "tokLen": 2 1671 // CHECK-NEXT: } 1672 // CHECK-NEXT: }, 1673 // CHECK-NEXT: "isReferenced": true, 1674 // CHECK-NEXT: "name": "Ty", 1675 // CHECK-NEXT: "tagUsed": "typename", 1676 // CHECK-NEXT: "depth": 0, 1677 // CHECK-NEXT: "index": 0 1678 // CHECK-NEXT: }, 1679 // CHECK-NEXT: { 1680 // CHECK-NEXT: "id": "0x{{.*}}", 1681 // CHECK-NEXT: "kind": "CXXRecordDecl", 1682 // CHECK-NEXT: "loc": { 1683 // CHECK-NEXT: "line": 40, 1684 // CHECK-NEXT: "col": 8, 1685 // CHECK-NEXT: "tokLen": 1 1686 // CHECK-NEXT: }, 1687 // CHECK-NEXT: "range": { 1688 // CHECK-NEXT: "begin": { 1689 // CHECK-NEXT: "col": 1, 1690 // CHECK-NEXT: "tokLen": 6 1691 // CHECK-NEXT: }, 1692 // CHECK-NEXT: "end": { 1693 // CHECK-NEXT: "col": 8, 1694 // CHECK-NEXT: "tokLen": 1 1695 // CHECK-NEXT: } 1696 // CHECK-NEXT: }, 1697 // CHECK-NEXT: "isImplicit": true, 1698 // CHECK-NEXT: "name": "S", 1699 // CHECK-NEXT: "tagUsed": "struct" 1700 // CHECK-NEXT: } 1701 // CHECK-NEXT: ] 1702 // CHECK-NEXT: }, 1703 // CHECK-NEXT: { 1704 // CHECK-NEXT: "id": "0x{{.*}}", 1705 // CHECK-NEXT: "kind": "ClassTemplateDecl", 1706 // CHECK-NEXT: "loc": { 1707 // CHECK-NEXT: "line": 43, 1708 // CHECK-NEXT: "col": 8, 1709 // CHECK-NEXT: "tokLen": 1 1710 // CHECK-NEXT: }, 1711 // CHECK-NEXT: "range": { 1712 // CHECK-NEXT: "begin": { 1713 // CHECK-NEXT: "line": 42, 1714 // CHECK-NEXT: "col": 1, 1715 // CHECK-NEXT: "tokLen": 8 1716 // CHECK-NEXT: }, 1717 // CHECK-NEXT: "end": { 1718 // CHECK-NEXT: "line": 43, 1719 // CHECK-NEXT: "col": 11, 1720 // CHECK-NEXT: "tokLen": 1 1721 // CHECK-NEXT: } 1722 // CHECK-NEXT: }, 1723 // CHECK-NEXT: "name": "T", 1724 // CHECK-NEXT: "inner": [ 1725 // CHECK-NEXT: { 1726 // CHECK-NEXT: "id": "0x{{.*}}", 1727 // CHECK-NEXT: "kind": "NonTypeTemplateParmDecl", 1728 // CHECK-NEXT: "loc": { 1729 // CHECK-NEXT: "line": 42, 1730 // CHECK-NEXT: "col": 15, 1731 // CHECK-NEXT: "tokLen": 1 1732 // CHECK-NEXT: }, 1733 // CHECK-NEXT: "range": { 1734 // CHECK-NEXT: "begin": { 1735 // CHECK-NEXT: "col": 11, 1736 // CHECK-NEXT: "tokLen": 4 1737 // CHECK-NEXT: }, 1738 // CHECK-NEXT: "end": { 1739 // CHECK-NEXT: "col": 11, 1740 // CHECK-NEXT: "tokLen": 4 1741 // CHECK-NEXT: } 1742 // CHECK-NEXT: }, 1743 // CHECK-NEXT: "type": { 1744 // CHECK-NEXT: "qualType": "auto" 1745 // CHECK-NEXT: }, 1746 // CHECK-NEXT: "depth": 0, 1747 // CHECK-NEXT: "index": 0 1748 // CHECK-NEXT: }, 1749 // CHECK-NEXT: { 1750 // CHECK-NEXT: "id": "0x{{.*}}", 1751 // CHECK-NEXT: "kind": "CXXRecordDecl", 1752 // CHECK-NEXT: "loc": { 1753 // CHECK-NEXT: "line": 43, 1754 // CHECK-NEXT: "col": 8, 1755 // CHECK-NEXT: "tokLen": 1 1756 // CHECK-NEXT: }, 1757 // CHECK-NEXT: "range": { 1758 // CHECK-NEXT: "begin": { 1759 // CHECK-NEXT: "col": 1, 1760 // CHECK-NEXT: "tokLen": 6 1761 // CHECK-NEXT: }, 1762 // CHECK-NEXT: "end": { 1763 // CHECK-NEXT: "col": 11, 1764 // CHECK-NEXT: "tokLen": 1 1765 // CHECK-NEXT: } 1766 // CHECK-NEXT: }, 1767 // CHECK-NEXT: "name": "T", 1768 // CHECK-NEXT: "tagUsed": "struct", 1769 // CHECK-NEXT: "completeDefinition": true, 1770 // CHECK-NEXT: "definitionData": { 1771 // CHECK-NEXT: "canConstDefaultInit": true, 1772 // CHECK-NEXT: "copyAssign": { 1773 // CHECK-NEXT: "hasConstParam": true, 1774 // CHECK-NEXT: "implicitHasConstParam": true, 1775 // CHECK-NEXT: "needsImplicit": true, 1776 // CHECK-NEXT: "trivial": true 1777 // CHECK-NEXT: }, 1778 // CHECK-NEXT: "copyCtor": { 1779 // CHECK-NEXT: "hasConstParam": true, 1780 // CHECK-NEXT: "implicitHasConstParam": true, 1781 // CHECK-NEXT: "needsImplicit": true, 1782 // CHECK-NEXT: "simple": true, 1783 // CHECK-NEXT: "trivial": true 1784 // CHECK-NEXT: }, 1785 // CHECK-NEXT: "defaultCtor": { 1786 // CHECK-NEXT: "defaultedIsConstexpr": true, 1787 // CHECK-NEXT: "exists": true, 1788 // CHECK-NEXT: "isConstexpr": true, 1789 // CHECK-NEXT: "needsImplicit": true, 1790 // CHECK-NEXT: "trivial": true 1791 // CHECK-NEXT: }, 1792 // CHECK-NEXT: "dtor": { 1793 // CHECK-NEXT: "irrelevant": true, 1794 // CHECK-NEXT: "needsImplicit": true, 1795 // CHECK-NEXT: "simple": true, 1796 // CHECK-NEXT: "trivial": true 1797 // CHECK-NEXT: }, 1798 // CHECK-NEXT: "hasConstexprNonCopyMoveConstructor": true, 1799 // CHECK-NEXT: "isAggregate": true, 1800 // CHECK-NEXT: "isEmpty": true, 1801 // CHECK-NEXT: "isLiteral": true, 1802 // CHECK-NEXT: "isPOD": true, 1803 // CHECK-NEXT: "isStandardLayout": true, 1804 // CHECK-NEXT: "isTrivial": true, 1805 // CHECK-NEXT: "isTriviallyCopyable": true, 1806 // CHECK-NEXT: "moveAssign": { 1807 // CHECK-NEXT: "exists": true, 1808 // CHECK-NEXT: "needsImplicit": true, 1809 // CHECK-NEXT: "simple": true, 1810 // CHECK-NEXT: "trivial": true 1811 // CHECK-NEXT: }, 1812 // CHECK-NEXT: "moveCtor": { 1813 // CHECK-NEXT: "exists": true, 1814 // CHECK-NEXT: "needsImplicit": true, 1815 // CHECK-NEXT: "simple": true, 1816 // CHECK-NEXT: "trivial": true 1817 // CHECK-NEXT: } 1818 // CHECK-NEXT: }, 1819 // CHECK-NEXT: "inner": [ 1820 // CHECK-NEXT: { 1821 // CHECK-NEXT: "id": "0x{{.*}}", 1822 // CHECK-NEXT: "kind": "CXXRecordDecl", 1823 // CHECK-NEXT: "loc": { 1824 // CHECK-NEXT: "col": 8, 1825 // CHECK-NEXT: "tokLen": 1 1826 // CHECK-NEXT: }, 1827 // CHECK-NEXT: "range": { 1828 // CHECK-NEXT: "begin": { 1829 // CHECK-NEXT: "col": 1, 1830 // CHECK-NEXT: "tokLen": 6 1831 // CHECK-NEXT: }, 1832 // CHECK-NEXT: "end": { 1833 // CHECK-NEXT: "col": 8, 1834 // CHECK-NEXT: "tokLen": 1 1835 // CHECK-NEXT: } 1836 // CHECK-NEXT: }, 1837 // CHECK-NEXT: "isImplicit": true, 1838 // CHECK-NEXT: "name": "T", 1839 // CHECK-NEXT: "tagUsed": "struct" 1840 // CHECK-NEXT: } 1841 // CHECK-NEXT: ] 1842 // CHECK-NEXT: } 1843 // CHECK-NEXT: ] 1844 // CHECK-NEXT: }, 1845 // CHECK-NEXT: { 1846 // CHECK-NEXT: "id": "0x{{.*}}", 1847 // CHECK-NEXT: "kind": "ClassTemplateDecl", 1848 // CHECK-NEXT: "loc": { 1849 // CHECK-NEXT: "line": 46, 1850 // CHECK-NEXT: "col": 8, 1851 // CHECK-NEXT: "tokLen": 1 1852 // CHECK-NEXT: }, 1853 // CHECK-NEXT: "range": { 1854 // CHECK-NEXT: "begin": { 1855 // CHECK-NEXT: "line": 45, 1856 // CHECK-NEXT: "col": 1, 1857 // CHECK-NEXT: "tokLen": 8 1858 // CHECK-NEXT: }, 1859 // CHECK-NEXT: "end": { 1860 // CHECK-NEXT: "line": 46, 1861 // CHECK-NEXT: "col": 11, 1862 // CHECK-NEXT: "tokLen": 1 1863 // CHECK-NEXT: } 1864 // CHECK-NEXT: }, 1865 // CHECK-NEXT: "name": "U", 1866 // CHECK-NEXT: "inner": [ 1867 // CHECK-NEXT: { 1868 // CHECK-NEXT: "id": "0x{{.*}}", 1869 // CHECK-NEXT: "kind": "NonTypeTemplateParmDecl", 1870 // CHECK-NEXT: "loc": { 1871 // CHECK-NEXT: "line": 45, 1872 // CHECK-NEXT: "col": 25, 1873 // CHECK-NEXT: "tokLen": 1 1874 // CHECK-NEXT: }, 1875 // CHECK-NEXT: "range": { 1876 // CHECK-NEXT: "begin": { 1877 // CHECK-NEXT: "col": 11, 1878 // CHECK-NEXT: "tokLen": 8 1879 // CHECK-NEXT: }, 1880 // CHECK-NEXT: "end": { 1881 // CHECK-NEXT: "col": 11, 1882 // CHECK-NEXT: "tokLen": 8 1883 // CHECK-NEXT: } 1884 // CHECK-NEXT: }, 1885 // CHECK-NEXT: "type": { 1886 // CHECK-NEXT: "qualType": "decltype(auto)" 1887 // CHECK-NEXT: }, 1888 // CHECK-NEXT: "depth": 0, 1889 // CHECK-NEXT: "index": 0 1890 // CHECK-NEXT: }, 1891 // CHECK-NEXT: { 1892 // CHECK-NEXT: "id": "0x{{.*}}", 1893 // CHECK-NEXT: "kind": "CXXRecordDecl", 1894 // CHECK-NEXT: "loc": { 1895 // CHECK-NEXT: "line": 46, 1896 // CHECK-NEXT: "col": 8, 1897 // CHECK-NEXT: "tokLen": 1 1898 // CHECK-NEXT: }, 1899 // CHECK-NEXT: "range": { 1900 // CHECK-NEXT: "begin": { 1901 // CHECK-NEXT: "col": 1, 1902 // CHECK-NEXT: "tokLen": 6 1903 // CHECK-NEXT: }, 1904 // CHECK-NEXT: "end": { 1905 // CHECK-NEXT: "col": 11, 1906 // CHECK-NEXT: "tokLen": 1 1907 // CHECK-NEXT: } 1908 // CHECK-NEXT: }, 1909 // CHECK-NEXT: "name": "U", 1910 // CHECK-NEXT: "tagUsed": "struct", 1911 // CHECK-NEXT: "completeDefinition": true, 1912 // CHECK-NEXT: "definitionData": { 1913 // CHECK-NEXT: "canConstDefaultInit": true, 1914 // CHECK-NEXT: "copyAssign": { 1915 // CHECK-NEXT: "hasConstParam": true, 1916 // CHECK-NEXT: "implicitHasConstParam": true, 1917 // CHECK-NEXT: "needsImplicit": true, 1918 // CHECK-NEXT: "trivial": true 1919 // CHECK-NEXT: }, 1920 // CHECK-NEXT: "copyCtor": { 1921 // CHECK-NEXT: "hasConstParam": true, 1922 // CHECK-NEXT: "implicitHasConstParam": true, 1923 // CHECK-NEXT: "needsImplicit": true, 1924 // CHECK-NEXT: "simple": true, 1925 // CHECK-NEXT: "trivial": true 1926 // CHECK-NEXT: }, 1927 // CHECK-NEXT: "defaultCtor": { 1928 // CHECK-NEXT: "defaultedIsConstexpr": true, 1929 // CHECK-NEXT: "exists": true, 1930 // CHECK-NEXT: "isConstexpr": true, 1931 // CHECK-NEXT: "needsImplicit": true, 1932 // CHECK-NEXT: "trivial": true 1933 // CHECK-NEXT: }, 1934 // CHECK-NEXT: "dtor": { 1935 // CHECK-NEXT: "irrelevant": true, 1936 // CHECK-NEXT: "needsImplicit": true, 1937 // CHECK-NEXT: "simple": true, 1938 // CHECK-NEXT: "trivial": true 1939 // CHECK-NEXT: }, 1940 // CHECK-NEXT: "hasConstexprNonCopyMoveConstructor": true, 1941 // CHECK-NEXT: "isAggregate": true, 1942 // CHECK-NEXT: "isEmpty": true, 1943 // CHECK-NEXT: "isLiteral": true, 1944 // CHECK-NEXT: "isPOD": true, 1945 // CHECK-NEXT: "isStandardLayout": true, 1946 // CHECK-NEXT: "isTrivial": true, 1947 // CHECK-NEXT: "isTriviallyCopyable": true, 1948 // CHECK-NEXT: "moveAssign": { 1949 // CHECK-NEXT: "exists": true, 1950 // CHECK-NEXT: "needsImplicit": true, 1951 // CHECK-NEXT: "simple": true, 1952 // CHECK-NEXT: "trivial": true 1953 // CHECK-NEXT: }, 1954 // CHECK-NEXT: "moveCtor": { 1955 // CHECK-NEXT: "exists": true, 1956 // CHECK-NEXT: "needsImplicit": true, 1957 // CHECK-NEXT: "simple": true, 1958 // CHECK-NEXT: "trivial": true 1959 // CHECK-NEXT: } 1960 // CHECK-NEXT: }, 1961 // CHECK-NEXT: "inner": [ 1962 // CHECK-NEXT: { 1963 // CHECK-NEXT: "id": "0x{{.*}}", 1964 // CHECK-NEXT: "kind": "CXXRecordDecl", 1965 // CHECK-NEXT: "loc": { 1966 // CHECK-NEXT: "col": 8, 1967 // CHECK-NEXT: "tokLen": 1 1968 // CHECK-NEXT: }, 1969 // CHECK-NEXT: "range": { 1970 // CHECK-NEXT: "begin": { 1971 // CHECK-NEXT: "col": 1, 1972 // CHECK-NEXT: "tokLen": 6 1973 // CHECK-NEXT: }, 1974 // CHECK-NEXT: "end": { 1975 // CHECK-NEXT: "col": 8, 1976 // CHECK-NEXT: "tokLen": 1 1977 // CHECK-NEXT: } 1978 // CHECK-NEXT: }, 1979 // CHECK-NEXT: "isImplicit": true, 1980 // CHECK-NEXT: "name": "U", 1981 // CHECK-NEXT: "tagUsed": "struct" 1982 // CHECK-NEXT: } 1983 // CHECK-NEXT: ] 1984 // CHECK-NEXT: } 1985 // CHECK-NEXT: ] 1986 // CHECK-NEXT: }, 1987 // CHECK-NEXT: { 1988 // CHECK-NEXT: "id": "0x{{.*}}", 1989 // CHECK-NEXT: "kind": "ClassTemplateDecl", 1990 // CHECK-NEXT: "loc": { 1991 // CHECK-NEXT: "line": 49, 1992 // CHECK-NEXT: "col": 8, 1993 // CHECK-NEXT: "tokLen": 1 1994 // CHECK-NEXT: }, 1995 // CHECK-NEXT: "range": { 1996 // CHECK-NEXT: "begin": { 1997 // CHECK-NEXT: "line": 48, 1998 // CHECK-NEXT: "col": 1, 1999 // CHECK-NEXT: "tokLen": 8 2000 // CHECK-NEXT: }, 2001 // CHECK-NEXT: "end": { 2002 // CHECK-NEXT: "line": 52, 2003 // CHECK-NEXT: "col": 1, 2004 // CHECK-NEXT: "tokLen": 1 2005 // CHECK-NEXT: } 2006 // CHECK-NEXT: }, 2007 // CHECK-NEXT: "name": "V", 2008 // CHECK-NEXT: "inner": [ 2009 // CHECK-NEXT: { 2010 // CHECK-NEXT: "id": "0x{{.*}}", 2011 // CHECK-NEXT: "kind": "TemplateTypeParmDecl", 2012 // CHECK-NEXT: "loc": { 2013 // CHECK-NEXT: "line": 48, 2014 // CHECK-NEXT: "col": 20, 2015 // CHECK-NEXT: "tokLen": 2 2016 // CHECK-NEXT: }, 2017 // CHECK-NEXT: "range": { 2018 // CHECK-NEXT: "begin": { 2019 // CHECK-NEXT: "col": 11, 2020 // CHECK-NEXT: "tokLen": 8 2021 // CHECK-NEXT: }, 2022 // CHECK-NEXT: "end": { 2023 // CHECK-NEXT: "col": 20, 2024 // CHECK-NEXT: "tokLen": 2 2025 // CHECK-NEXT: } 2026 // CHECK-NEXT: }, 2027 // CHECK-NEXT: "name": "Ty", 2028 // CHECK-NEXT: "tagUsed": "typename", 2029 // CHECK-NEXT: "depth": 0, 2030 // CHECK-NEXT: "index": 0 2031 // CHECK-NEXT: }, 2032 // CHECK-NEXT: { 2033 // CHECK-NEXT: "id": "0x{{.*}}", 2034 // CHECK-NEXT: "kind": "CXXRecordDecl", 2035 // CHECK-NEXT: "loc": { 2036 // CHECK-NEXT: "line": 49, 2037 // CHECK-NEXT: "col": 8, 2038 // CHECK-NEXT: "tokLen": 1 2039 // CHECK-NEXT: }, 2040 // CHECK-NEXT: "range": { 2041 // CHECK-NEXT: "begin": { 2042 // CHECK-NEXT: "col": 1, 2043 // CHECK-NEXT: "tokLen": 6 2044 // CHECK-NEXT: }, 2045 // CHECK-NEXT: "end": { 2046 // CHECK-NEXT: "line": 52, 2047 // CHECK-NEXT: "col": 1, 2048 // CHECK-NEXT: "tokLen": 1 2049 // CHECK-NEXT: } 2050 // CHECK-NEXT: }, 2051 // CHECK-NEXT: "name": "V", 2052 // CHECK-NEXT: "tagUsed": "struct", 2053 // CHECK-NEXT: "completeDefinition": true, 2054 // CHECK-NEXT: "definitionData": { 2055 // CHECK-NEXT: "canConstDefaultInit": true, 2056 // CHECK-NEXT: "copyAssign": { 2057 // CHECK-NEXT: "hasConstParam": true, 2058 // CHECK-NEXT: "implicitHasConstParam": true, 2059 // CHECK-NEXT: "needsImplicit": true, 2060 // CHECK-NEXT: "trivial": true 2061 // CHECK-NEXT: }, 2062 // CHECK-NEXT: "copyCtor": { 2063 // CHECK-NEXT: "hasConstParam": true, 2064 // CHECK-NEXT: "implicitHasConstParam": true, 2065 // CHECK-NEXT: "needsImplicit": true, 2066 // CHECK-NEXT: "simple": true, 2067 // CHECK-NEXT: "trivial": true 2068 // CHECK-NEXT: }, 2069 // CHECK-NEXT: "defaultCtor": { 2070 // CHECK-NEXT: "defaultedIsConstexpr": true, 2071 // CHECK-NEXT: "exists": true, 2072 // CHECK-NEXT: "isConstexpr": true, 2073 // CHECK-NEXT: "needsImplicit": true, 2074 // CHECK-NEXT: "trivial": true 2075 // CHECK-NEXT: }, 2076 // CHECK-NEXT: "dtor": { 2077 // CHECK-NEXT: "irrelevant": true, 2078 // CHECK-NEXT: "needsImplicit": true, 2079 // CHECK-NEXT: "simple": true, 2080 // CHECK-NEXT: "trivial": true 2081 // CHECK-NEXT: }, 2082 // CHECK-NEXT: "hasConstexprNonCopyMoveConstructor": true, 2083 // CHECK-NEXT: "isAggregate": true, 2084 // CHECK-NEXT: "isEmpty": true, 2085 // CHECK-NEXT: "isLiteral": true, 2086 // CHECK-NEXT: "isPOD": true, 2087 // CHECK-NEXT: "isStandardLayout": true, 2088 // CHECK-NEXT: "isTrivial": true, 2089 // CHECK-NEXT: "isTriviallyCopyable": true, 2090 // CHECK-NEXT: "moveAssign": { 2091 // CHECK-NEXT: "exists": true, 2092 // CHECK-NEXT: "needsImplicit": true, 2093 // CHECK-NEXT: "simple": true, 2094 // CHECK-NEXT: "trivial": true 2095 // CHECK-NEXT: }, 2096 // CHECK-NEXT: "moveCtor": { 2097 // CHECK-NEXT: "exists": true, 2098 // CHECK-NEXT: "needsImplicit": true, 2099 // CHECK-NEXT: "simple": true, 2100 // CHECK-NEXT: "trivial": true 2101 // CHECK-NEXT: } 2102 // CHECK-NEXT: }, 2103 // CHECK-NEXT: "inner": [ 2104 // CHECK-NEXT: { 2105 // CHECK-NEXT: "id": "0x{{.*}}", 2106 // CHECK-NEXT: "kind": "CXXRecordDecl", 2107 // CHECK-NEXT: "loc": { 2108 // CHECK-NEXT: "line": 49, 2109 // CHECK-NEXT: "col": 8, 2110 // CHECK-NEXT: "tokLen": 1 2111 // CHECK-NEXT: }, 2112 // CHECK-NEXT: "range": { 2113 // CHECK-NEXT: "begin": { 2114 // CHECK-NEXT: "col": 1, 2115 // CHECK-NEXT: "tokLen": 6 2116 // CHECK-NEXT: }, 2117 // CHECK-NEXT: "end": { 2118 // CHECK-NEXT: "col": 8, 2119 // CHECK-NEXT: "tokLen": 1 2120 // CHECK-NEXT: } 2121 // CHECK-NEXT: }, 2122 // CHECK-NEXT: "isImplicit": true, 2123 // CHECK-NEXT: "name": "V", 2124 // CHECK-NEXT: "tagUsed": "struct" 2125 // CHECK-NEXT: }, 2126 // CHECK-NEXT: { 2127 // CHECK-NEXT: "id": "0x{{.*}}", 2128 // CHECK-NEXT: "kind": "FunctionTemplateDecl", 2129 // CHECK-NEXT: "loc": { 2130 // CHECK-NEXT: "line": 51, 2131 // CHECK-NEXT: "col": 8, 2132 // CHECK-NEXT: "tokLen": 1 2133 // CHECK-NEXT: }, 2134 // CHECK-NEXT: "range": { 2135 // CHECK-NEXT: "begin": { 2136 // CHECK-NEXT: "line": 50, 2137 // CHECK-NEXT: "col": 3, 2138 // CHECK-NEXT: "tokLen": 8 2139 // CHECK-NEXT: }, 2140 // CHECK-NEXT: "end": { 2141 // CHECK-NEXT: "line": 51, 2142 // CHECK-NEXT: "col": 10, 2143 // CHECK-NEXT: "tokLen": 1 2144 // CHECK-NEXT: } 2145 // CHECK-NEXT: }, 2146 // CHECK-NEXT: "name": "f", 2147 // CHECK-NEXT: "inner": [ 2148 // CHECK-NEXT: { 2149 // CHECK-NEXT: "id": "0x{{.*}}", 2150 // CHECK-NEXT: "kind": "TemplateTypeParmDecl", 2151 // CHECK-NEXT: "loc": { 2152 // CHECK-NEXT: "line": 50, 2153 // CHECK-NEXT: "col": 22, 2154 // CHECK-NEXT: "tokLen": 2 2155 // CHECK-NEXT: }, 2156 // CHECK-NEXT: "range": { 2157 // CHECK-NEXT: "begin": { 2158 // CHECK-NEXT: "col": 13, 2159 // CHECK-NEXT: "tokLen": 8 2160 // CHECK-NEXT: }, 2161 // CHECK-NEXT: "end": { 2162 // CHECK-NEXT: "col": 22, 2163 // CHECK-NEXT: "tokLen": 2 2164 // CHECK-NEXT: } 2165 // CHECK-NEXT: }, 2166 // CHECK-NEXT: "name": "Uy", 2167 // CHECK-NEXT: "tagUsed": "typename", 2168 // CHECK-NEXT: "depth": 1, 2169 // CHECK-NEXT: "index": 0 2170 // CHECK-NEXT: }, 2171 // CHECK-NEXT: { 2172 // CHECK-NEXT: "id": "0x{{.*}}", 2173 // CHECK-NEXT: "kind": "CXXMethodDecl", 2174 // CHECK-NEXT: "loc": { 2175 // CHECK-NEXT: "line": 51, 2176 // CHECK-NEXT: "col": 8, 2177 // CHECK-NEXT: "tokLen": 1 2178 // CHECK-NEXT: }, 2179 // CHECK-NEXT: "range": { 2180 // CHECK-NEXT: "begin": { 2181 // CHECK-NEXT: "col": 3, 2182 // CHECK-NEXT: "tokLen": 4 2183 // CHECK-NEXT: }, 2184 // CHECK-NEXT: "end": { 2185 // CHECK-NEXT: "col": 10, 2186 // CHECK-NEXT: "tokLen": 1 2187 // CHECK-NEXT: } 2188 // CHECK-NEXT: }, 2189 // CHECK-NEXT: "name": "f", 2190 // CHECK-NEXT: "type": { 2191 // CHECK-NEXT: "qualType": "void ()" 2192 // CHECK-NEXT: } 2193 // CHECK-NEXT: } 2194 // CHECK-NEXT: ] 2195 // CHECK-NEXT: } 2196 // CHECK-NEXT: ] 2197 // CHECK-NEXT: } 2198 // CHECK-NEXT: ] 2199 // CHECK-NEXT: }, 2200 // CHECK-NEXT: { 2201 // CHECK-NEXT: "id": "0x{{.*}}", 2202 // CHECK-NEXT: "kind": "FunctionTemplateDecl", 2203 // CHECK-NEXT: "loc": { 2204 // CHECK-NEXT: "line": 56, 2205 // CHECK-NEXT: "col": 13, 2206 // CHECK-NEXT: "tokLen": 1 2207 // CHECK-NEXT: }, 2208 // CHECK-NEXT: "range": { 2209 // CHECK-NEXT: "begin": { 2210 // CHECK-NEXT: "line": 55, 2211 // CHECK-NEXT: "col": 1, 2212 // CHECK-NEXT: "tokLen": 8 2213 // CHECK-NEXT: }, 2214 // CHECK-NEXT: "end": { 2215 // CHECK-NEXT: "line": 56, 2216 // CHECK-NEXT: "col": 18, 2217 // CHECK-NEXT: "tokLen": 1 2218 // CHECK-NEXT: } 2219 // CHECK-NEXT: }, 2220 // CHECK-NEXT: "parentDeclContextId": "0x{{.*}}", 2221 // CHECK-NEXT: "previousDecl": "0x{{.*}}", 2222 // CHECK-NEXT: "name": "f", 2223 // CHECK-NEXT: "inner": [ 2224 // CHECK-NEXT: { 2225 // CHECK-NEXT: "id": "0x{{.*}}", 2226 // CHECK-NEXT: "kind": "TemplateTypeParmDecl", 2227 // CHECK-NEXT: "loc": { 2228 // CHECK-NEXT: "line": 55, 2229 // CHECK-NEXT: "col": 20, 2230 // CHECK-NEXT: "tokLen": 2 2231 // CHECK-NEXT: }, 2232 // CHECK-NEXT: "range": { 2233 // CHECK-NEXT: "begin": { 2234 // CHECK-NEXT: "col": 11, 2235 // CHECK-NEXT: "tokLen": 8 2236 // CHECK-NEXT: }, 2237 // CHECK-NEXT: "end": { 2238 // CHECK-NEXT: "col": 20, 2239 // CHECK-NEXT: "tokLen": 2 2240 // CHECK-NEXT: } 2241 // CHECK-NEXT: }, 2242 // CHECK-NEXT: "name": "Uy", 2243 // CHECK-NEXT: "tagUsed": "typename", 2244 // CHECK-NEXT: "depth": 1, 2245 // CHECK-NEXT: "index": 0 2246 // CHECK-NEXT: }, 2247 // CHECK-NEXT: { 2248 // CHECK-NEXT: "id": "0x{{.*}}", 2249 // CHECK-NEXT: "kind": "CXXMethodDecl", 2250 // CHECK-NEXT: "loc": { 2251 // CHECK-NEXT: "line": 56, 2252 // CHECK-NEXT: "col": 13, 2253 // CHECK-NEXT: "tokLen": 1 2254 // CHECK-NEXT: }, 2255 // CHECK-NEXT: "range": { 2256 // CHECK-NEXT: "begin": { 2257 // CHECK-NEXT: "line": 54, 2258 // CHECK-NEXT: "col": 1, 2259 // CHECK-NEXT: "tokLen": 8 2260 // CHECK-NEXT: }, 2261 // CHECK-NEXT: "end": { 2262 // CHECK-NEXT: "line": 56, 2263 // CHECK-NEXT: "col": 18, 2264 // CHECK-NEXT: "tokLen": 1 2265 // CHECK-NEXT: } 2266 // CHECK-NEXT: }, 2267 // CHECK-NEXT: "parentDeclContextId": "0x{{.*}}", 2268 // CHECK-NEXT: "previousDecl": "0x{{.*}}", 2269 // CHECK-NEXT: "name": "f", 2270 // CHECK-NEXT: "type": { 2271 // CHECK-NEXT: "qualType": "void ()" 2272 // CHECK-NEXT: }, 2273 // CHECK-NEXT: "inner": [ 2274 // CHECK-NEXT: { 2275 // CHECK-NEXT: "id": "0x{{.*}}", 2276 // CHECK-NEXT: "kind": "CompoundStmt", 2277 // CHECK-NEXT: "range": { 2278 // CHECK-NEXT: "begin": { 2279 // CHECK-NEXT: "col": 17, 2280 // CHECK-NEXT: "tokLen": 1 2281 // CHECK-NEXT: }, 2282 // CHECK-NEXT: "end": { 2283 // CHECK-NEXT: "col": 18, 2284 // CHECK-NEXT: "tokLen": 1 2285 // CHECK-NEXT: } 2286 // CHECK-NEXT: } 2287 // CHECK-NEXT: } 2288 // CHECK-NEXT: ] 2289 // CHECK-NEXT: } 2290 // CHECK-NEXT: ] 2291 // CHECK-NEXT: } 2292 // CHECK-NEXT: ] 2293 // CHECK-NEXT: } 2294