1 // RUN: %clang_cc1 -triple x86_64-unknown-unknown -ast-dump=json -ast-dump-filter Test %s | FileCheck %s 2 3 struct S { 4 void Test1(); 5 void Test2() const; 6 void Test3() volatile; 7 void Test4() &; 8 void Test5() &&; 9 virtual void Test6(float, int = 12); 10 virtual void Test7() = 0; 11 }; 12 13 struct T : S { // T is not referenced, but S is 14 void Test6(float, int = 100) override; 15 }; 16 17 struct U { 18 void Test1(); 19 }; 20 void U::Test1() {} // parent 21 22 void Test1(); 23 void Test2(void); 24 void Test3(int a, int b); 25 void Test4(int a, int b = 12); 26 constexpr void Test5(void); 27 static void Test6(void); 28 extern void Test7(void); 29 inline void Test8(void); 30 void Test9(void) noexcept; 31 void Test10(void) noexcept(false); 32 void Test11(void) noexcept(1); 33 34 template <typename T> 35 T Test12(T&); 36 37 void Test13(int) {} 38 void Test14(int, ...) {} 39 40 int main() { 41 Test1(); // Causes this to be marked 'used' 42 } 43 44 // NOTE: CHECK lines have been autogenerated by gen_ast_dump_json_test.py 45 46 47 // CHECK: "kind": "CXXMethodDecl", 48 // CHECK-NEXT: "loc": { 49 // CHECK-NEXT: "file": "{{.*}}", 50 // CHECK-NEXT: "line": 4, 51 // CHECK-NEXT: "col": 8, 52 // CHECK-NEXT: "tokLen": 5 53 // CHECK-NEXT: }, 54 // CHECK-NEXT: "range": { 55 // CHECK-NEXT: "begin": { 56 // CHECK-NEXT: "col": 3, 57 // CHECK-NEXT: "tokLen": 4 58 // CHECK-NEXT: }, 59 // CHECK-NEXT: "end": { 60 // CHECK-NEXT: "col": 14, 61 // CHECK-NEXT: "tokLen": 1 62 // CHECK-NEXT: } 63 // CHECK-NEXT: }, 64 // CHECK-NEXT: "name": "Test1", 65 // CHECK-NEXT: "type": { 66 // CHECK-NEXT: "qualType": "void ()" 67 // CHECK-NEXT: } 68 // CHECK-NEXT: } 69 70 71 // CHECK: "kind": "CXXMethodDecl", 72 // CHECK-NEXT: "loc": { 73 // CHECK-NEXT: "file": "{{.*}}", 74 // CHECK-NEXT: "line": 5, 75 // CHECK-NEXT: "col": 8, 76 // CHECK-NEXT: "tokLen": 5 77 // CHECK-NEXT: }, 78 // CHECK-NEXT: "range": { 79 // CHECK-NEXT: "begin": { 80 // CHECK-NEXT: "col": 3, 81 // CHECK-NEXT: "tokLen": 4 82 // CHECK-NEXT: }, 83 // CHECK-NEXT: "end": { 84 // CHECK-NEXT: "col": 16, 85 // CHECK-NEXT: "tokLen": 5 86 // CHECK-NEXT: } 87 // CHECK-NEXT: }, 88 // CHECK-NEXT: "name": "Test2", 89 // CHECK-NEXT: "type": { 90 // CHECK-NEXT: "qualType": "void () const" 91 // CHECK-NEXT: } 92 // CHECK-NEXT: } 93 94 95 // CHECK: "kind": "CXXMethodDecl", 96 // CHECK-NEXT: "loc": { 97 // CHECK-NEXT: "file": "{{.*}}", 98 // CHECK-NEXT: "line": 6, 99 // CHECK-NEXT: "col": 8, 100 // CHECK-NEXT: "tokLen": 5 101 // CHECK-NEXT: }, 102 // CHECK-NEXT: "range": { 103 // CHECK-NEXT: "begin": { 104 // CHECK-NEXT: "col": 3, 105 // CHECK-NEXT: "tokLen": 4 106 // CHECK-NEXT: }, 107 // CHECK-NEXT: "end": { 108 // CHECK-NEXT: "col": 16, 109 // CHECK-NEXT: "tokLen": 8 110 // CHECK-NEXT: } 111 // CHECK-NEXT: }, 112 // CHECK-NEXT: "name": "Test3", 113 // CHECK-NEXT: "type": { 114 // CHECK-NEXT: "qualType": "void () volatile" 115 // CHECK-NEXT: } 116 // CHECK-NEXT: } 117 118 119 // CHECK: "kind": "CXXMethodDecl", 120 // CHECK-NEXT: "loc": { 121 // CHECK-NEXT: "file": "{{.*}}", 122 // CHECK-NEXT: "line": 7, 123 // CHECK-NEXT: "col": 8, 124 // CHECK-NEXT: "tokLen": 5 125 // CHECK-NEXT: }, 126 // CHECK-NEXT: "range": { 127 // CHECK-NEXT: "begin": { 128 // CHECK-NEXT: "col": 3, 129 // CHECK-NEXT: "tokLen": 4 130 // CHECK-NEXT: }, 131 // CHECK-NEXT: "end": { 132 // CHECK-NEXT: "col": 16, 133 // CHECK-NEXT: "tokLen": 1 134 // CHECK-NEXT: } 135 // CHECK-NEXT: }, 136 // CHECK-NEXT: "name": "Test4", 137 // CHECK-NEXT: "type": { 138 // CHECK-NEXT: "qualType": "void () &" 139 // CHECK-NEXT: } 140 // CHECK-NEXT: } 141 142 143 // CHECK: "kind": "CXXMethodDecl", 144 // CHECK-NEXT: "loc": { 145 // CHECK-NEXT: "file": "{{.*}}", 146 // CHECK-NEXT: "line": 8, 147 // CHECK-NEXT: "col": 8, 148 // CHECK-NEXT: "tokLen": 5 149 // CHECK-NEXT: }, 150 // CHECK-NEXT: "range": { 151 // CHECK-NEXT: "begin": { 152 // CHECK-NEXT: "col": 3, 153 // CHECK-NEXT: "tokLen": 4 154 // CHECK-NEXT: }, 155 // CHECK-NEXT: "end": { 156 // CHECK-NEXT: "col": 16, 157 // CHECK-NEXT: "tokLen": 2 158 // CHECK-NEXT: } 159 // CHECK-NEXT: }, 160 // CHECK-NEXT: "name": "Test5", 161 // CHECK-NEXT: "type": { 162 // CHECK-NEXT: "qualType": "void () &&" 163 // CHECK-NEXT: } 164 // CHECK-NEXT: } 165 166 167 // CHECK: "kind": "CXXMethodDecl", 168 // CHECK-NEXT: "loc": { 169 // CHECK-NEXT: "file": "{{.*}}", 170 // CHECK-NEXT: "line": 9, 171 // CHECK-NEXT: "col": 16, 172 // CHECK-NEXT: "tokLen": 5 173 // CHECK-NEXT: }, 174 // CHECK-NEXT: "range": { 175 // CHECK-NEXT: "begin": { 176 // CHECK-NEXT: "col": 3, 177 // CHECK-NEXT: "tokLen": 7 178 // CHECK-NEXT: }, 179 // CHECK-NEXT: "end": { 180 // CHECK-NEXT: "col": 37, 181 // CHECK-NEXT: "tokLen": 1 182 // CHECK-NEXT: } 183 // CHECK-NEXT: }, 184 // CHECK-NEXT: "name": "Test6", 185 // CHECK-NEXT: "type": { 186 // CHECK-NEXT: "qualType": "void (float, int)" 187 // CHECK-NEXT: }, 188 // CHECK-NEXT: "virtual": true, 189 // CHECK-NEXT: "inner": [ 190 // CHECK-NEXT: { 191 // CHECK-NEXT: "id": "0x{{.*}}", 192 // CHECK-NEXT: "kind": "ParmVarDecl", 193 // CHECK-NEXT: "loc": { 194 // CHECK-NEXT: "col": 27, 195 // CHECK-NEXT: "tokLen": 1 196 // CHECK-NEXT: }, 197 // CHECK-NEXT: "range": { 198 // CHECK-NEXT: "begin": { 199 // CHECK-NEXT: "col": 22, 200 // CHECK-NEXT: "tokLen": 5 201 // CHECK-NEXT: }, 202 // CHECK-NEXT: "end": { 203 // CHECK-NEXT: "col": 22, 204 // CHECK-NEXT: "tokLen": 5 205 // CHECK-NEXT: } 206 // CHECK-NEXT: }, 207 // CHECK-NEXT: "type": { 208 // CHECK-NEXT: "qualType": "float" 209 // CHECK-NEXT: } 210 // CHECK-NEXT: }, 211 // CHECK-NEXT: { 212 // CHECK-NEXT: "id": "0x{{.*}}", 213 // CHECK-NEXT: "kind": "ParmVarDecl", 214 // CHECK-NEXT: "loc": { 215 // CHECK-NEXT: "col": 33, 216 // CHECK-NEXT: "tokLen": 1 217 // CHECK-NEXT: }, 218 // CHECK-NEXT: "range": { 219 // CHECK-NEXT: "begin": { 220 // CHECK-NEXT: "col": 29, 221 // CHECK-NEXT: "tokLen": 3 222 // CHECK-NEXT: }, 223 // CHECK-NEXT: "end": { 224 // CHECK-NEXT: "col": 35, 225 // CHECK-NEXT: "tokLen": 2 226 // CHECK-NEXT: } 227 // CHECK-NEXT: }, 228 // CHECK-NEXT: "type": { 229 // CHECK-NEXT: "qualType": "int" 230 // CHECK-NEXT: }, 231 // CHECK-NEXT: "init": "c", 232 // CHECK-NEXT: "inner": [ 233 // CHECK-NEXT: { 234 // CHECK-NEXT: "id": "0x{{.*}}", 235 // CHECK-NEXT: "kind": "IntegerLiteral", 236 // CHECK-NEXT: "range": { 237 // CHECK-NEXT: "begin": { 238 // CHECK-NEXT: "col": 35, 239 // CHECK-NEXT: "tokLen": 2 240 // CHECK-NEXT: }, 241 // CHECK-NEXT: "end": { 242 // CHECK-NEXT: "col": 35, 243 // CHECK-NEXT: "tokLen": 2 244 // CHECK-NEXT: } 245 // CHECK-NEXT: }, 246 // CHECK-NEXT: "type": { 247 // CHECK-NEXT: "qualType": "int" 248 // CHECK-NEXT: }, 249 // CHECK-NEXT: "valueCategory": "rvalue", 250 // CHECK-NEXT: "value": "12" 251 // CHECK-NEXT: } 252 // CHECK-NEXT: ] 253 // CHECK-NEXT: } 254 // CHECK-NEXT: ] 255 // CHECK-NEXT: } 256 257 258 // CHECK: "kind": "CXXMethodDecl", 259 // CHECK-NEXT: "loc": { 260 // CHECK-NEXT: "file": "{{.*}}", 261 // CHECK-NEXT: "line": 10, 262 // CHECK-NEXT: "col": 16, 263 // CHECK-NEXT: "tokLen": 5 264 // CHECK-NEXT: }, 265 // CHECK-NEXT: "range": { 266 // CHECK-NEXT: "begin": { 267 // CHECK-NEXT: "col": 3, 268 // CHECK-NEXT: "tokLen": 7 269 // CHECK-NEXT: }, 270 // CHECK-NEXT: "end": { 271 // CHECK-NEXT: "col": 26, 272 // CHECK-NEXT: "tokLen": 1 273 // CHECK-NEXT: } 274 // CHECK-NEXT: }, 275 // CHECK-NEXT: "name": "Test7", 276 // CHECK-NEXT: "type": { 277 // CHECK-NEXT: "qualType": "void ()" 278 // CHECK-NEXT: }, 279 // CHECK-NEXT: "virtual": true, 280 // CHECK-NEXT: "pure": true 281 // CHECK-NEXT: } 282 283 284 // CHECK: "kind": "CXXMethodDecl", 285 // CHECK-NEXT: "loc": { 286 // CHECK-NEXT: "file": "{{.*}}", 287 // CHECK-NEXT: "line": 14, 288 // CHECK-NEXT: "col": 8, 289 // CHECK-NEXT: "tokLen": 5 290 // CHECK-NEXT: }, 291 // CHECK-NEXT: "range": { 292 // CHECK-NEXT: "begin": { 293 // CHECK-NEXT: "col": 3, 294 // CHECK-NEXT: "tokLen": 4 295 // CHECK-NEXT: }, 296 // CHECK-NEXT: "end": { 297 // CHECK-NEXT: "col": 32, 298 // CHECK-NEXT: "tokLen": 8 299 // CHECK-NEXT: } 300 // CHECK-NEXT: }, 301 // CHECK-NEXT: "name": "Test6", 302 // CHECK-NEXT: "type": { 303 // CHECK-NEXT: "qualType": "void (float, int)" 304 // CHECK-NEXT: }, 305 // CHECK-NEXT: "inner": [ 306 // CHECK-NEXT: { 307 // CHECK-NEXT: "id": "0x{{.*}}", 308 // CHECK-NEXT: "kind": "ParmVarDecl", 309 // CHECK-NEXT: "loc": { 310 // CHECK-NEXT: "col": 19, 311 // CHECK-NEXT: "tokLen": 1 312 // CHECK-NEXT: }, 313 // CHECK-NEXT: "range": { 314 // CHECK-NEXT: "begin": { 315 // CHECK-NEXT: "col": 14, 316 // CHECK-NEXT: "tokLen": 5 317 // CHECK-NEXT: }, 318 // CHECK-NEXT: "end": { 319 // CHECK-NEXT: "col": 14, 320 // CHECK-NEXT: "tokLen": 5 321 // CHECK-NEXT: } 322 // CHECK-NEXT: }, 323 // CHECK-NEXT: "type": { 324 // CHECK-NEXT: "qualType": "float" 325 // CHECK-NEXT: } 326 // CHECK-NEXT: }, 327 // CHECK-NEXT: { 328 // CHECK-NEXT: "id": "0x{{.*}}", 329 // CHECK-NEXT: "kind": "ParmVarDecl", 330 // CHECK-NEXT: "loc": { 331 // CHECK-NEXT: "col": 25, 332 // CHECK-NEXT: "tokLen": 1 333 // CHECK-NEXT: }, 334 // CHECK-NEXT: "range": { 335 // CHECK-NEXT: "begin": { 336 // CHECK-NEXT: "col": 21, 337 // CHECK-NEXT: "tokLen": 3 338 // CHECK-NEXT: }, 339 // CHECK-NEXT: "end": { 340 // CHECK-NEXT: "col": 27, 341 // CHECK-NEXT: "tokLen": 3 342 // CHECK-NEXT: } 343 // CHECK-NEXT: }, 344 // CHECK-NEXT: "type": { 345 // CHECK-NEXT: "qualType": "int" 346 // CHECK-NEXT: }, 347 // CHECK-NEXT: "init": "c", 348 // CHECK-NEXT: "inner": [ 349 // CHECK-NEXT: { 350 // CHECK-NEXT: "id": "0x{{.*}}", 351 // CHECK-NEXT: "kind": "IntegerLiteral", 352 // CHECK-NEXT: "range": { 353 // CHECK-NEXT: "begin": { 354 // CHECK-NEXT: "col": 27, 355 // CHECK-NEXT: "tokLen": 3 356 // CHECK-NEXT: }, 357 // CHECK-NEXT: "end": { 358 // CHECK-NEXT: "col": 27, 359 // CHECK-NEXT: "tokLen": 3 360 // CHECK-NEXT: } 361 // CHECK-NEXT: }, 362 // CHECK-NEXT: "type": { 363 // CHECK-NEXT: "qualType": "int" 364 // CHECK-NEXT: }, 365 // CHECK-NEXT: "valueCategory": "rvalue", 366 // CHECK-NEXT: "value": "100" 367 // CHECK-NEXT: } 368 // CHECK-NEXT: ] 369 // CHECK-NEXT: }, 370 // CHECK-NEXT: { 371 // CHECK-NEXT: "id": "0x{{.*}}", 372 // CHECK-NEXT: "kind": "OverrideAttr", 373 // CHECK-NEXT: "range": { 374 // CHECK-NEXT: "begin": { 375 // CHECK-NEXT: "col": 32, 376 // CHECK-NEXT: "tokLen": 8 377 // CHECK-NEXT: }, 378 // CHECK-NEXT: "end": { 379 // CHECK-NEXT: "col": 32, 380 // CHECK-NEXT: "tokLen": 8 381 // CHECK-NEXT: } 382 // CHECK-NEXT: } 383 // CHECK-NEXT: } 384 // CHECK-NEXT: ] 385 // CHECK-NEXT: } 386 387 388 // CHECK: "kind": "CXXMethodDecl", 389 // CHECK-NEXT: "loc": { 390 // CHECK-NEXT: "file": "{{.*}}", 391 // CHECK-NEXT: "line": 18, 392 // CHECK-NEXT: "col": 8, 393 // CHECK-NEXT: "tokLen": 5 394 // CHECK-NEXT: }, 395 // CHECK-NEXT: "range": { 396 // CHECK-NEXT: "begin": { 397 // CHECK-NEXT: "col": 3, 398 // CHECK-NEXT: "tokLen": 4 399 // CHECK-NEXT: }, 400 // CHECK-NEXT: "end": { 401 // CHECK-NEXT: "col": 14, 402 // CHECK-NEXT: "tokLen": 1 403 // CHECK-NEXT: } 404 // CHECK-NEXT: }, 405 // CHECK-NEXT: "name": "Test1", 406 // CHECK-NEXT: "type": { 407 // CHECK-NEXT: "qualType": "void ()" 408 // CHECK-NEXT: } 409 // CHECK-NEXT: } 410 411 412 // CHECK: "kind": "CXXMethodDecl", 413 // CHECK-NEXT: "loc": { 414 // CHECK-NEXT: "file": "{{.*}}", 415 // CHECK-NEXT: "line": 20, 416 // CHECK-NEXT: "col": 9, 417 // CHECK-NEXT: "tokLen": 5 418 // CHECK-NEXT: }, 419 // CHECK-NEXT: "range": { 420 // CHECK-NEXT: "begin": { 421 // CHECK-NEXT: "col": 1, 422 // CHECK-NEXT: "tokLen": 4 423 // CHECK-NEXT: }, 424 // CHECK-NEXT: "end": { 425 // CHECK-NEXT: "col": 18, 426 // CHECK-NEXT: "tokLen": 1 427 // CHECK-NEXT: } 428 // CHECK-NEXT: }, 429 // CHECK-NEXT: "parentDeclContext": "0x{{.*}}", 430 // CHECK-NEXT: "previousDecl": "0x{{.*}}", 431 // CHECK-NEXT: "name": "Test1", 432 // CHECK-NEXT: "type": { 433 // CHECK-NEXT: "qualType": "void ()" 434 // CHECK-NEXT: }, 435 // CHECK-NEXT: "inner": [ 436 // CHECK-NEXT: { 437 // CHECK-NEXT: "id": "0x{{.*}}", 438 // CHECK-NEXT: "kind": "CompoundStmt", 439 // CHECK-NEXT: "range": { 440 // CHECK-NEXT: "begin": { 441 // CHECK-NEXT: "col": 17, 442 // CHECK-NEXT: "tokLen": 1 443 // CHECK-NEXT: }, 444 // CHECK-NEXT: "end": { 445 // CHECK-NEXT: "col": 18, 446 // CHECK-NEXT: "tokLen": 1 447 // CHECK-NEXT: } 448 // CHECK-NEXT: } 449 // CHECK-NEXT: } 450 // CHECK-NEXT: ] 451 // CHECK-NEXT: } 452 453 454 // CHECK: "kind": "FunctionDecl", 455 // CHECK-NEXT: "loc": { 456 // CHECK-NEXT: "file": "{{.*}}", 457 // CHECK-NEXT: "line": 22, 458 // CHECK-NEXT: "col": 6, 459 // CHECK-NEXT: "tokLen": 5 460 // CHECK-NEXT: }, 461 // CHECK-NEXT: "range": { 462 // CHECK-NEXT: "begin": { 463 // CHECK-NEXT: "col": 1, 464 // CHECK-NEXT: "tokLen": 4 465 // CHECK-NEXT: }, 466 // CHECK-NEXT: "end": { 467 // CHECK-NEXT: "col": 12, 468 // CHECK-NEXT: "tokLen": 1 469 // CHECK-NEXT: } 470 // CHECK-NEXT: }, 471 // CHECK-NEXT: "isUsed": true, 472 // CHECK-NEXT: "name": "Test1", 473 // CHECK-NEXT: "type": { 474 // CHECK-NEXT: "qualType": "void ()" 475 // CHECK-NEXT: } 476 // CHECK-NEXT: } 477 478 479 // CHECK: "kind": "FunctionDecl", 480 // CHECK-NEXT: "loc": { 481 // CHECK-NEXT: "file": "{{.*}}", 482 // CHECK-NEXT: "line": 23, 483 // CHECK-NEXT: "col": 6, 484 // CHECK-NEXT: "tokLen": 5 485 // CHECK-NEXT: }, 486 // CHECK-NEXT: "range": { 487 // CHECK-NEXT: "begin": { 488 // CHECK-NEXT: "col": 1, 489 // CHECK-NEXT: "tokLen": 4 490 // CHECK-NEXT: }, 491 // CHECK-NEXT: "end": { 492 // CHECK-NEXT: "col": 16, 493 // CHECK-NEXT: "tokLen": 1 494 // CHECK-NEXT: } 495 // CHECK-NEXT: }, 496 // CHECK-NEXT: "name": "Test2", 497 // CHECK-NEXT: "type": { 498 // CHECK-NEXT: "qualType": "void ()" 499 // CHECK-NEXT: } 500 // CHECK-NEXT: } 501 502 503 // CHECK: "kind": "FunctionDecl", 504 // CHECK-NEXT: "loc": { 505 // CHECK-NEXT: "file": "{{.*}}", 506 // CHECK-NEXT: "line": 24, 507 // CHECK-NEXT: "col": 6, 508 // CHECK-NEXT: "tokLen": 5 509 // CHECK-NEXT: }, 510 // CHECK-NEXT: "range": { 511 // CHECK-NEXT: "begin": { 512 // CHECK-NEXT: "col": 1, 513 // CHECK-NEXT: "tokLen": 4 514 // CHECK-NEXT: }, 515 // CHECK-NEXT: "end": { 516 // CHECK-NEXT: "col": 24, 517 // CHECK-NEXT: "tokLen": 1 518 // CHECK-NEXT: } 519 // CHECK-NEXT: }, 520 // CHECK-NEXT: "name": "Test3", 521 // CHECK-NEXT: "type": { 522 // CHECK-NEXT: "qualType": "void (int, int)" 523 // CHECK-NEXT: }, 524 // CHECK-NEXT: "inner": [ 525 // CHECK-NEXT: { 526 // CHECK-NEXT: "id": "0x{{.*}}", 527 // CHECK-NEXT: "kind": "ParmVarDecl", 528 // CHECK-NEXT: "loc": { 529 // CHECK-NEXT: "col": 16, 530 // CHECK-NEXT: "tokLen": 1 531 // CHECK-NEXT: }, 532 // CHECK-NEXT: "range": { 533 // CHECK-NEXT: "begin": { 534 // CHECK-NEXT: "col": 12, 535 // CHECK-NEXT: "tokLen": 3 536 // CHECK-NEXT: }, 537 // CHECK-NEXT: "end": { 538 // CHECK-NEXT: "col": 16, 539 // CHECK-NEXT: "tokLen": 1 540 // CHECK-NEXT: } 541 // CHECK-NEXT: }, 542 // CHECK-NEXT: "name": "a", 543 // CHECK-NEXT: "type": { 544 // CHECK-NEXT: "qualType": "int" 545 // CHECK-NEXT: } 546 // CHECK-NEXT: }, 547 // CHECK-NEXT: { 548 // CHECK-NEXT: "id": "0x{{.*}}", 549 // CHECK-NEXT: "kind": "ParmVarDecl", 550 // CHECK-NEXT: "loc": { 551 // CHECK-NEXT: "col": 23, 552 // CHECK-NEXT: "tokLen": 1 553 // CHECK-NEXT: }, 554 // CHECK-NEXT: "range": { 555 // CHECK-NEXT: "begin": { 556 // CHECK-NEXT: "col": 19, 557 // CHECK-NEXT: "tokLen": 3 558 // CHECK-NEXT: }, 559 // CHECK-NEXT: "end": { 560 // CHECK-NEXT: "col": 23, 561 // CHECK-NEXT: "tokLen": 1 562 // CHECK-NEXT: } 563 // CHECK-NEXT: }, 564 // CHECK-NEXT: "name": "b", 565 // CHECK-NEXT: "type": { 566 // CHECK-NEXT: "qualType": "int" 567 // CHECK-NEXT: } 568 // CHECK-NEXT: } 569 // CHECK-NEXT: ] 570 // CHECK-NEXT: } 571 572 573 // CHECK: "kind": "FunctionDecl", 574 // CHECK-NEXT: "loc": { 575 // CHECK-NEXT: "file": "{{.*}}", 576 // CHECK-NEXT: "line": 25, 577 // CHECK-NEXT: "col": 6, 578 // CHECK-NEXT: "tokLen": 5 579 // CHECK-NEXT: }, 580 // CHECK-NEXT: "range": { 581 // CHECK-NEXT: "begin": { 582 // CHECK-NEXT: "col": 1, 583 // CHECK-NEXT: "tokLen": 4 584 // CHECK-NEXT: }, 585 // CHECK-NEXT: "end": { 586 // CHECK-NEXT: "col": 29, 587 // CHECK-NEXT: "tokLen": 1 588 // CHECK-NEXT: } 589 // CHECK-NEXT: }, 590 // CHECK-NEXT: "name": "Test4", 591 // CHECK-NEXT: "type": { 592 // CHECK-NEXT: "qualType": "void (int, int)" 593 // CHECK-NEXT: }, 594 // CHECK-NEXT: "inner": [ 595 // CHECK-NEXT: { 596 // CHECK-NEXT: "id": "0x{{.*}}", 597 // CHECK-NEXT: "kind": "ParmVarDecl", 598 // CHECK-NEXT: "loc": { 599 // CHECK-NEXT: "col": 16, 600 // CHECK-NEXT: "tokLen": 1 601 // CHECK-NEXT: }, 602 // CHECK-NEXT: "range": { 603 // CHECK-NEXT: "begin": { 604 // CHECK-NEXT: "col": 12, 605 // CHECK-NEXT: "tokLen": 3 606 // CHECK-NEXT: }, 607 // CHECK-NEXT: "end": { 608 // CHECK-NEXT: "col": 16, 609 // CHECK-NEXT: "tokLen": 1 610 // CHECK-NEXT: } 611 // CHECK-NEXT: }, 612 // CHECK-NEXT: "name": "a", 613 // CHECK-NEXT: "type": { 614 // CHECK-NEXT: "qualType": "int" 615 // CHECK-NEXT: } 616 // CHECK-NEXT: }, 617 // CHECK-NEXT: { 618 // CHECK-NEXT: "id": "0x{{.*}}", 619 // CHECK-NEXT: "kind": "ParmVarDecl", 620 // CHECK-NEXT: "loc": { 621 // CHECK-NEXT: "col": 23, 622 // CHECK-NEXT: "tokLen": 1 623 // CHECK-NEXT: }, 624 // CHECK-NEXT: "range": { 625 // CHECK-NEXT: "begin": { 626 // CHECK-NEXT: "col": 19, 627 // CHECK-NEXT: "tokLen": 3 628 // CHECK-NEXT: }, 629 // CHECK-NEXT: "end": { 630 // CHECK-NEXT: "col": 27, 631 // CHECK-NEXT: "tokLen": 2 632 // CHECK-NEXT: } 633 // CHECK-NEXT: }, 634 // CHECK-NEXT: "name": "b", 635 // CHECK-NEXT: "type": { 636 // CHECK-NEXT: "qualType": "int" 637 // CHECK-NEXT: }, 638 // CHECK-NEXT: "init": "c", 639 // CHECK-NEXT: "inner": [ 640 // CHECK-NEXT: { 641 // CHECK-NEXT: "id": "0x{{.*}}", 642 // CHECK-NEXT: "kind": "IntegerLiteral", 643 // CHECK-NEXT: "range": { 644 // CHECK-NEXT: "begin": { 645 // CHECK-NEXT: "col": 27, 646 // CHECK-NEXT: "tokLen": 2 647 // CHECK-NEXT: }, 648 // CHECK-NEXT: "end": { 649 // CHECK-NEXT: "col": 27, 650 // CHECK-NEXT: "tokLen": 2 651 // CHECK-NEXT: } 652 // CHECK-NEXT: }, 653 // CHECK-NEXT: "type": { 654 // CHECK-NEXT: "qualType": "int" 655 // CHECK-NEXT: }, 656 // CHECK-NEXT: "valueCategory": "rvalue", 657 // CHECK-NEXT: "value": "12" 658 // CHECK-NEXT: } 659 // CHECK-NEXT: ] 660 // CHECK-NEXT: } 661 // CHECK-NEXT: ] 662 // CHECK-NEXT: } 663 664 665 // CHECK: "kind": "FunctionDecl", 666 // CHECK-NEXT: "loc": { 667 // CHECK-NEXT: "file": "{{.*}}", 668 // CHECK-NEXT: "line": 26, 669 // CHECK-NEXT: "col": 16, 670 // CHECK-NEXT: "tokLen": 5 671 // CHECK-NEXT: }, 672 // CHECK-NEXT: "range": { 673 // CHECK-NEXT: "begin": { 674 // CHECK-NEXT: "col": 1, 675 // CHECK-NEXT: "tokLen": 9 676 // CHECK-NEXT: }, 677 // CHECK-NEXT: "end": { 678 // CHECK-NEXT: "col": 26, 679 // CHECK-NEXT: "tokLen": 1 680 // CHECK-NEXT: } 681 // CHECK-NEXT: }, 682 // CHECK-NEXT: "name": "Test5", 683 // CHECK-NEXT: "type": { 684 // CHECK-NEXT: "qualType": "void ()" 685 // CHECK-NEXT: }, 686 // CHECK-NEXT: "constexpr": true 687 // CHECK-NEXT: } 688 689 690 // CHECK: "kind": "FunctionDecl", 691 // CHECK-NEXT: "loc": { 692 // CHECK-NEXT: "file": "{{.*}}", 693 // CHECK-NEXT: "line": 27, 694 // CHECK-NEXT: "col": 13, 695 // CHECK-NEXT: "tokLen": 5 696 // CHECK-NEXT: }, 697 // CHECK-NEXT: "range": { 698 // CHECK-NEXT: "begin": { 699 // CHECK-NEXT: "col": 1, 700 // CHECK-NEXT: "tokLen": 6 701 // CHECK-NEXT: }, 702 // CHECK-NEXT: "end": { 703 // CHECK-NEXT: "col": 23, 704 // CHECK-NEXT: "tokLen": 1 705 // CHECK-NEXT: } 706 // CHECK-NEXT: }, 707 // CHECK-NEXT: "name": "Test6", 708 // CHECK-NEXT: "type": { 709 // CHECK-NEXT: "qualType": "void ()" 710 // CHECK-NEXT: }, 711 // CHECK-NEXT: "storageClass": "static" 712 // CHECK-NEXT: } 713 714 715 // CHECK: "kind": "FunctionDecl", 716 // CHECK-NEXT: "loc": { 717 // CHECK-NEXT: "file": "{{.*}}", 718 // CHECK-NEXT: "line": 28, 719 // CHECK-NEXT: "col": 13, 720 // CHECK-NEXT: "tokLen": 5 721 // CHECK-NEXT: }, 722 // CHECK-NEXT: "range": { 723 // CHECK-NEXT: "begin": { 724 // CHECK-NEXT: "col": 1, 725 // CHECK-NEXT: "tokLen": 6 726 // CHECK-NEXT: }, 727 // CHECK-NEXT: "end": { 728 // CHECK-NEXT: "col": 23, 729 // CHECK-NEXT: "tokLen": 1 730 // CHECK-NEXT: } 731 // CHECK-NEXT: }, 732 // CHECK-NEXT: "name": "Test7", 733 // CHECK-NEXT: "type": { 734 // CHECK-NEXT: "qualType": "void ()" 735 // CHECK-NEXT: }, 736 // CHECK-NEXT: "storageClass": "extern" 737 // CHECK-NEXT: } 738 739 740 // CHECK: "kind": "FunctionDecl", 741 // CHECK-NEXT: "loc": { 742 // CHECK-NEXT: "file": "{{.*}}", 743 // CHECK-NEXT: "line": 29, 744 // CHECK-NEXT: "col": 13, 745 // CHECK-NEXT: "tokLen": 5 746 // CHECK-NEXT: }, 747 // CHECK-NEXT: "range": { 748 // CHECK-NEXT: "begin": { 749 // CHECK-NEXT: "col": 1, 750 // CHECK-NEXT: "tokLen": 6 751 // CHECK-NEXT: }, 752 // CHECK-NEXT: "end": { 753 // CHECK-NEXT: "col": 23, 754 // CHECK-NEXT: "tokLen": 1 755 // CHECK-NEXT: } 756 // CHECK-NEXT: }, 757 // CHECK-NEXT: "name": "Test8", 758 // CHECK-NEXT: "type": { 759 // CHECK-NEXT: "qualType": "void ()" 760 // CHECK-NEXT: }, 761 // CHECK-NEXT: "inline": true 762 // CHECK-NEXT: } 763 764 765 // CHECK: "kind": "FunctionDecl", 766 // CHECK-NEXT: "loc": { 767 // CHECK-NEXT: "file": "{{.*}}", 768 // CHECK-NEXT: "line": 30, 769 // CHECK-NEXT: "col": 6, 770 // CHECK-NEXT: "tokLen": 5 771 // CHECK-NEXT: }, 772 // CHECK-NEXT: "range": { 773 // CHECK-NEXT: "begin": { 774 // CHECK-NEXT: "col": 1, 775 // CHECK-NEXT: "tokLen": 4 776 // CHECK-NEXT: }, 777 // CHECK-NEXT: "end": { 778 // CHECK-NEXT: "col": 18, 779 // CHECK-NEXT: "tokLen": 8 780 // CHECK-NEXT: } 781 // CHECK-NEXT: }, 782 // CHECK-NEXT: "name": "Test9", 783 // CHECK-NEXT: "type": { 784 // CHECK-NEXT: "qualType": "void () noexcept" 785 // CHECK-NEXT: } 786 // CHECK-NEXT: } 787 788 789 // CHECK: "kind": "FunctionDecl", 790 // CHECK-NEXT: "loc": { 791 // CHECK-NEXT: "file": "{{.*}}", 792 // CHECK-NEXT: "line": 31, 793 // CHECK-NEXT: "col": 6, 794 // CHECK-NEXT: "tokLen": 6 795 // CHECK-NEXT: }, 796 // CHECK-NEXT: "range": { 797 // CHECK-NEXT: "begin": { 798 // CHECK-NEXT: "col": 1, 799 // CHECK-NEXT: "tokLen": 4 800 // CHECK-NEXT: }, 801 // CHECK-NEXT: "end": { 802 // CHECK-NEXT: "col": 33, 803 // CHECK-NEXT: "tokLen": 1 804 // CHECK-NEXT: } 805 // CHECK-NEXT: }, 806 // CHECK-NEXT: "name": "Test10", 807 // CHECK-NEXT: "type": { 808 // CHECK-NEXT: "qualType": "void () noexcept(false)" 809 // CHECK-NEXT: } 810 // CHECK-NEXT: } 811 812 813 // CHECK: "kind": "FunctionDecl", 814 // CHECK-NEXT: "loc": { 815 // CHECK-NEXT: "file": "{{.*}}", 816 // CHECK-NEXT: "line": 32, 817 // CHECK-NEXT: "col": 6, 818 // CHECK-NEXT: "tokLen": 6 819 // CHECK-NEXT: }, 820 // CHECK-NEXT: "range": { 821 // CHECK-NEXT: "begin": { 822 // CHECK-NEXT: "col": 1, 823 // CHECK-NEXT: "tokLen": 4 824 // CHECK-NEXT: }, 825 // CHECK-NEXT: "end": { 826 // CHECK-NEXT: "col": 29, 827 // CHECK-NEXT: "tokLen": 1 828 // CHECK-NEXT: } 829 // CHECK-NEXT: }, 830 // CHECK-NEXT: "name": "Test11", 831 // CHECK-NEXT: "type": { 832 // CHECK-NEXT: "qualType": "void () noexcept(1)" 833 // CHECK-NEXT: } 834 // CHECK-NEXT: } 835 836 837 // CHECK: "kind": "FunctionTemplateDecl", 838 // CHECK-NEXT: "loc": { 839 // CHECK-NEXT: "file": "{{.*}}", 840 // CHECK-NEXT: "line": 35, 841 // CHECK-NEXT: "col": 3, 842 // CHECK-NEXT: "tokLen": 6 843 // CHECK-NEXT: }, 844 // CHECK-NEXT: "range": { 845 // CHECK-NEXT: "begin": { 846 // CHECK-NEXT: "line": 34, 847 // CHECK-NEXT: "col": 1, 848 // CHECK-NEXT: "tokLen": 8 849 // CHECK-NEXT: }, 850 // CHECK-NEXT: "end": { 851 // CHECK-NEXT: "line": 35, 852 // CHECK-NEXT: "col": 12, 853 // CHECK-NEXT: "tokLen": 1 854 // CHECK-NEXT: } 855 // CHECK-NEXT: }, 856 // CHECK-NEXT: "name": "Test12", 857 // CHECK-NEXT: "inner": [ 858 // CHECK-NEXT: { 859 // CHECK-NEXT: "id": "0x{{.*}}", 860 // CHECK-NEXT: "kind": "TemplateTypeParmDecl", 861 // CHECK-NEXT: "loc": { 862 // CHECK-NEXT: "line": 34, 863 // CHECK-NEXT: "col": 20, 864 // CHECK-NEXT: "tokLen": 1 865 // CHECK-NEXT: }, 866 // CHECK-NEXT: "range": { 867 // CHECK-NEXT: "begin": { 868 // CHECK-NEXT: "col": 11, 869 // CHECK-NEXT: "tokLen": 8 870 // CHECK-NEXT: }, 871 // CHECK-NEXT: "end": { 872 // CHECK-NEXT: "col": 20, 873 // CHECK-NEXT: "tokLen": 1 874 // CHECK-NEXT: } 875 // CHECK-NEXT: }, 876 // CHECK-NEXT: "isReferenced": true, 877 // CHECK-NEXT: "name": "T", 878 // CHECK-NEXT: "tagUsed": "typename", 879 // CHECK-NEXT: "depth": 0, 880 // CHECK-NEXT: "index": 0 881 // CHECK-NEXT: }, 882 // CHECK-NEXT: { 883 // CHECK-NEXT: "id": "0x{{.*}}", 884 // CHECK-NEXT: "kind": "FunctionDecl", 885 // CHECK-NEXT: "loc": { 886 // CHECK-NEXT: "line": 35, 887 // CHECK-NEXT: "col": 3, 888 // CHECK-NEXT: "tokLen": 6 889 // CHECK-NEXT: }, 890 // CHECK-NEXT: "range": { 891 // CHECK-NEXT: "begin": { 892 // CHECK-NEXT: "col": 1, 893 // CHECK-NEXT: "tokLen": 1 894 // CHECK-NEXT: }, 895 // CHECK-NEXT: "end": { 896 // CHECK-NEXT: "col": 12, 897 // CHECK-NEXT: "tokLen": 1 898 // CHECK-NEXT: } 899 // CHECK-NEXT: }, 900 // CHECK-NEXT: "name": "Test12", 901 // CHECK-NEXT: "type": { 902 // CHECK-NEXT: "qualType": "T (T &)" 903 // CHECK-NEXT: }, 904 // CHECK-NEXT: "inner": [ 905 // CHECK-NEXT: { 906 // CHECK-NEXT: "id": "0x{{.*}}", 907 // CHECK-NEXT: "kind": "ParmVarDecl", 908 // CHECK-NEXT: "loc": { 909 // CHECK-NEXT: "col": 12, 910 // CHECK-NEXT: "tokLen": 1 911 // CHECK-NEXT: }, 912 // CHECK-NEXT: "range": { 913 // CHECK-NEXT: "begin": { 914 // CHECK-NEXT: "col": 10, 915 // CHECK-NEXT: "tokLen": 1 916 // CHECK-NEXT: }, 917 // CHECK-NEXT: "end": { 918 // CHECK-NEXT: "col": 11, 919 // CHECK-NEXT: "tokLen": 1 920 // CHECK-NEXT: } 921 // CHECK-NEXT: }, 922 // CHECK-NEXT: "type": { 923 // CHECK-NEXT: "qualType": "T &" 924 // CHECK-NEXT: } 925 // CHECK-NEXT: } 926 // CHECK-NEXT: ] 927 // CHECK-NEXT: } 928 // CHECK-NEXT: ] 929 // CHECK-NEXT: } 930 931 932 // CHECK: "kind": "FunctionDecl", 933 // CHECK-NEXT: "loc": { 934 // CHECK-NEXT: "file": "{{.*}}", 935 // CHECK-NEXT: "line": 37, 936 // CHECK-NEXT: "col": 6, 937 // CHECK-NEXT: "tokLen": 6 938 // CHECK-NEXT: }, 939 // CHECK-NEXT: "range": { 940 // CHECK-NEXT: "begin": { 941 // CHECK-NEXT: "col": 1, 942 // CHECK-NEXT: "tokLen": 4 943 // CHECK-NEXT: }, 944 // CHECK-NEXT: "end": { 945 // CHECK-NEXT: "col": 19, 946 // CHECK-NEXT: "tokLen": 1 947 // CHECK-NEXT: } 948 // CHECK-NEXT: }, 949 // CHECK-NEXT: "name": "Test13", 950 // CHECK-NEXT: "type": { 951 // CHECK-NEXT: "qualType": "void (int)" 952 // CHECK-NEXT: }, 953 // CHECK-NEXT: "inner": [ 954 // CHECK-NEXT: { 955 // CHECK-NEXT: "id": "0x{{.*}}", 956 // CHECK-NEXT: "kind": "ParmVarDecl", 957 // CHECK-NEXT: "loc": { 958 // CHECK-NEXT: "col": 16, 959 // CHECK-NEXT: "tokLen": 1 960 // CHECK-NEXT: }, 961 // CHECK-NEXT: "range": { 962 // CHECK-NEXT: "begin": { 963 // CHECK-NEXT: "col": 13, 964 // CHECK-NEXT: "tokLen": 3 965 // CHECK-NEXT: }, 966 // CHECK-NEXT: "end": { 967 // CHECK-NEXT: "col": 13, 968 // CHECK-NEXT: "tokLen": 3 969 // CHECK-NEXT: } 970 // CHECK-NEXT: }, 971 // CHECK-NEXT: "type": { 972 // CHECK-NEXT: "qualType": "int" 973 // CHECK-NEXT: } 974 // CHECK-NEXT: }, 975 // CHECK-NEXT: { 976 // CHECK-NEXT: "id": "0x{{.*}}", 977 // CHECK-NEXT: "kind": "CompoundStmt", 978 // CHECK-NEXT: "range": { 979 // CHECK-NEXT: "begin": { 980 // CHECK-NEXT: "col": 18, 981 // CHECK-NEXT: "tokLen": 1 982 // CHECK-NEXT: }, 983 // CHECK-NEXT: "end": { 984 // CHECK-NEXT: "col": 19, 985 // CHECK-NEXT: "tokLen": 1 986 // CHECK-NEXT: } 987 // CHECK-NEXT: } 988 // CHECK-NEXT: } 989 // CHECK-NEXT: ] 990 // CHECK-NEXT: } 991 992 993 // CHECK: "kind": "FunctionDecl", 994 // CHECK-NEXT: "loc": { 995 // CHECK-NEXT: "file": "{{.*}}", 996 // CHECK-NEXT: "line": 38, 997 // CHECK-NEXT: "col": 6, 998 // CHECK-NEXT: "tokLen": 6 999 // CHECK-NEXT: }, 1000 // CHECK-NEXT: "range": { 1001 // CHECK-NEXT: "begin": { 1002 // CHECK-NEXT: "col": 1, 1003 // CHECK-NEXT: "tokLen": 4 1004 // CHECK-NEXT: }, 1005 // CHECK-NEXT: "end": { 1006 // CHECK-NEXT: "col": 24, 1007 // CHECK-NEXT: "tokLen": 1 1008 // CHECK-NEXT: } 1009 // CHECK-NEXT: }, 1010 // CHECK-NEXT: "name": "Test14", 1011 // CHECK-NEXT: "type": { 1012 // CHECK-NEXT: "qualType": "void (int, ...)" 1013 // CHECK-NEXT: }, 1014 // CHECK-NEXT: "variadic": true, 1015 // CHECK-NEXT: "inner": [ 1016 // CHECK-NEXT: { 1017 // CHECK-NEXT: "id": "0x{{.*}}", 1018 // CHECK-NEXT: "kind": "ParmVarDecl", 1019 // CHECK-NEXT: "loc": { 1020 // CHECK-NEXT: "col": 16, 1021 // CHECK-NEXT: "tokLen": 1 1022 // CHECK-NEXT: }, 1023 // CHECK-NEXT: "range": { 1024 // CHECK-NEXT: "begin": { 1025 // CHECK-NEXT: "col": 13, 1026 // CHECK-NEXT: "tokLen": 3 1027 // CHECK-NEXT: }, 1028 // CHECK-NEXT: "end": { 1029 // CHECK-NEXT: "col": 13, 1030 // CHECK-NEXT: "tokLen": 3 1031 // CHECK-NEXT: } 1032 // CHECK-NEXT: }, 1033 // CHECK-NEXT: "type": { 1034 // CHECK-NEXT: "qualType": "int" 1035 // CHECK-NEXT: } 1036 // CHECK-NEXT: }, 1037 // CHECK-NEXT: { 1038 // CHECK-NEXT: "id": "0x{{.*}}", 1039 // CHECK-NEXT: "kind": "CompoundStmt", 1040 // CHECK-NEXT: "range": { 1041 // CHECK-NEXT: "begin": { 1042 // CHECK-NEXT: "col": 23, 1043 // CHECK-NEXT: "tokLen": 1 1044 // CHECK-NEXT: }, 1045 // CHECK-NEXT: "end": { 1046 // CHECK-NEXT: "col": 24, 1047 // CHECK-NEXT: "tokLen": 1 1048 // CHECK-NEXT: } 1049 // CHECK-NEXT: } 1050 // CHECK-NEXT: } 1051 // CHECK-NEXT: ] 1052 // CHECK-NEXT: } 1053