1// RUN: %clang_cc1 -triple x86_64-apple-darwin -Wno-unused -fblocks -ast-dump=json -ast-dump-filter Test %s | FileCheck %s 2 3@protocol P 4@end 5 6@interface A 7@end 8 9@interface TestObjCIvarDecl : A 10@end 11 12@implementation TestObjCIvarDecl { 13 int varDefault; 14 @private int varPrivate; 15 @protected int varProtected; 16 @public int varPublic; 17 @package int varPackage; 18} 19@end 20 21@interface testObjCMethodDecl : A { 22} 23- (int) TestObjCMethodDecl: (int)i, ...; 24@end 25 26@implementation testObjCMethodDecl 27- (int) TestObjCMethodDecl: (int)i, ... { 28 return 0; 29} 30@end 31 32@protocol TestObjCProtocolDecl 33- (void) foo; 34@end 35 36@interface TestObjCClass : A <P> 37- (void) foo; 38@end 39 40@implementation TestObjCClass : A { 41 int i; 42} 43- (void) foo { 44} 45@end 46 47@interface TestObjCClass (TestObjCCategoryDecl) <P> 48- (void) bar; 49@end 50 51@interface TestGenericInterface<T> : A<P> { 52} 53@end 54 55@implementation TestObjCClass (TestObjCCategoryDecl) 56- (void) bar { 57} 58@end 59 60@compatibility_alias TestObjCCompatibleAliasDecl A; 61 62@interface TestObjCProperty: A 63@property(getter=getterFoo, setter=setterFoo:) int foo; 64@property int bar; 65@end 66 67@implementation TestObjCProperty { 68 int i; 69} 70@synthesize foo=i; 71@synthesize bar; 72@end 73 74void TestBlockDecl(int x) { 75 ^(int y, ...){ x; }; 76} 77 78@interface B 79+ (int) foo; 80@end 81 82void f(void) { 83 __typeof__(B.foo) Test; 84} 85 86// NOTE: CHECK lines have been autogenerated by gen_ast_dump_json_test.py 87 88 89// CHECK-NOT: {{^}}Dumping 90// CHECK: "kind": "ObjCInterfaceDecl", 91// CHECK-NEXT: "loc": { 92// CHECK-NEXT: "offset": {{[0-9]+}}, 93// CHECK-NEXT: "file": "{{.*}}", 94// CHECK-NEXT: "line": 9, 95// CHECK-NEXT: "col": 12, 96// CHECK-NEXT: "tokLen": 16 97// CHECK-NEXT: }, 98// CHECK-NEXT: "range": { 99// CHECK-NEXT: "begin": { 100// CHECK-NEXT: "offset": {{[0-9]+}}, 101// CHECK-NEXT: "col": 1, 102// CHECK-NEXT: "tokLen": 1 103// CHECK-NEXT: }, 104// CHECK-NEXT: "end": { 105// CHECK-NEXT: "offset": {{[0-9]+}}, 106// CHECK-NEXT: "line": 10, 107// CHECK-NEXT: "col": 2, 108// CHECK-NEXT: "tokLen": 3 109// CHECK-NEXT: } 110// CHECK-NEXT: }, 111// CHECK-NEXT: "name": "TestObjCIvarDecl", 112// CHECK-NEXT: "mangledName": "_OBJC_CLASS_$_TestObjCIvarDecl", 113// CHECK-NEXT: "super": { 114// CHECK-NEXT: "id": "0x{{.*}}", 115// CHECK-NEXT: "kind": "ObjCInterfaceDecl", 116// CHECK-NEXT: "name": "A" 117// CHECK-NEXT: }, 118// CHECK-NEXT: "implementation": { 119// CHECK-NEXT: "id": "0x{{.*}}", 120// CHECK-NEXT: "kind": "ObjCImplementationDecl", 121// CHECK-NEXT: "name": "TestObjCIvarDecl" 122// CHECK-NEXT: } 123// CHECK-NEXT: } 124 125 126// CHECK-NOT: {{^}}Dumping 127// CHECK: "kind": "ObjCImplementationDecl", 128// CHECK-NEXT: "loc": { 129// CHECK-NEXT: "offset": {{[0-9]+}}, 130// CHECK-NEXT: "file": "{{.*}}", 131// CHECK-NEXT: "line": 12, 132// CHECK-NEXT: "col": 17, 133// CHECK-NEXT: "tokLen": 16 134// CHECK-NEXT: }, 135// CHECK-NEXT: "range": { 136// CHECK-NEXT: "begin": { 137// CHECK-NEXT: "offset": {{[0-9]+}}, 138// CHECK-NEXT: "col": 1, 139// CHECK-NEXT: "tokLen": 1 140// CHECK-NEXT: }, 141// CHECK-NEXT: "end": { 142// CHECK-NEXT: "offset": {{[0-9]+}}, 143// CHECK-NEXT: "line": 19, 144// CHECK-NEXT: "col": 1, 145// CHECK-NEXT: "tokLen": 1 146// CHECK-NEXT: } 147// CHECK-NEXT: }, 148// CHECK-NEXT: "name": "TestObjCIvarDecl", 149// CHECK-NEXT: "super": { 150// CHECK-NEXT: "id": "0x0" 151// CHECK-NEXT: }, 152// CHECK-NEXT: "interface": { 153// CHECK-NEXT: "id": "0x{{.*}}", 154// CHECK-NEXT: "kind": "ObjCInterfaceDecl", 155// CHECK-NEXT: "name": "TestObjCIvarDecl" 156// CHECK-NEXT: }, 157// CHECK-NEXT: "inner": [ 158// CHECK-NEXT: { 159// CHECK-NEXT: "id": "0x{{.*}}", 160// CHECK-NEXT: "kind": "ObjCIvarDecl", 161// CHECK-NEXT: "loc": { 162// CHECK-NEXT: "offset": {{[0-9]+}}, 163// CHECK-NEXT: "line": 13, 164// CHECK-NEXT: "col": 7, 165// CHECK-NEXT: "tokLen": 10 166// CHECK-NEXT: }, 167// CHECK-NEXT: "range": { 168// CHECK-NEXT: "begin": { 169// CHECK-NEXT: "offset": {{[0-9]+}}, 170// CHECK-NEXT: "col": 3, 171// CHECK-NEXT: "tokLen": 3 172// CHECK-NEXT: }, 173// CHECK-NEXT: "end": { 174// CHECK-NEXT: "offset": {{[0-9]+}}, 175// CHECK-NEXT: "col": 7, 176// CHECK-NEXT: "tokLen": 10 177// CHECK-NEXT: } 178// CHECK-NEXT: }, 179// CHECK-NEXT: "name": "varDefault", 180// CHECK-NEXT: "type": { 181// CHECK-NEXT: "qualType": "int" 182// CHECK-NEXT: }, 183// CHECK-NEXT: "access": "private" 184// CHECK-NEXT: }, 185// CHECK-NEXT: { 186// CHECK-NEXT: "id": "0x{{.*}}", 187// CHECK-NEXT: "kind": "ObjCIvarDecl", 188// CHECK-NEXT: "loc": { 189// CHECK-NEXT: "offset": {{[0-9]+}}, 190// CHECK-NEXT: "line": 14, 191// CHECK-NEXT: "col": 16, 192// CHECK-NEXT: "tokLen": 10 193// CHECK-NEXT: }, 194// CHECK-NEXT: "range": { 195// CHECK-NEXT: "begin": { 196// CHECK-NEXT: "offset": {{[0-9]+}}, 197// CHECK-NEXT: "col": 12, 198// CHECK-NEXT: "tokLen": 3 199// CHECK-NEXT: }, 200// CHECK-NEXT: "end": { 201// CHECK-NEXT: "offset": {{[0-9]+}}, 202// CHECK-NEXT: "col": 16, 203// CHECK-NEXT: "tokLen": 10 204// CHECK-NEXT: } 205// CHECK-NEXT: }, 206// CHECK-NEXT: "name": "varPrivate", 207// CHECK-NEXT: "type": { 208// CHECK-NEXT: "qualType": "int" 209// CHECK-NEXT: }, 210// CHECK-NEXT: "access": "private" 211// CHECK-NEXT: }, 212// CHECK-NEXT: { 213// CHECK-NEXT: "id": "0x{{.*}}", 214// CHECK-NEXT: "kind": "ObjCIvarDecl", 215// CHECK-NEXT: "loc": { 216// CHECK-NEXT: "offset": {{[0-9]+}}, 217// CHECK-NEXT: "line": 15, 218// CHECK-NEXT: "col": 18, 219// CHECK-NEXT: "tokLen": 12 220// CHECK-NEXT: }, 221// CHECK-NEXT: "range": { 222// CHECK-NEXT: "begin": { 223// CHECK-NEXT: "offset": {{[0-9]+}}, 224// CHECK-NEXT: "col": 14, 225// CHECK-NEXT: "tokLen": 3 226// CHECK-NEXT: }, 227// CHECK-NEXT: "end": { 228// CHECK-NEXT: "offset": {{[0-9]+}}, 229// CHECK-NEXT: "col": 18, 230// CHECK-NEXT: "tokLen": 12 231// CHECK-NEXT: } 232// CHECK-NEXT: }, 233// CHECK-NEXT: "name": "varProtected", 234// CHECK-NEXT: "type": { 235// CHECK-NEXT: "qualType": "int" 236// CHECK-NEXT: }, 237// CHECK-NEXT: "access": "protected" 238// CHECK-NEXT: }, 239// CHECK-NEXT: { 240// CHECK-NEXT: "id": "0x{{.*}}", 241// CHECK-NEXT: "kind": "ObjCIvarDecl", 242// CHECK-NEXT: "loc": { 243// CHECK-NEXT: "offset": {{[0-9]+}}, 244// CHECK-NEXT: "line": 16, 245// CHECK-NEXT: "col": 15, 246// CHECK-NEXT: "tokLen": 9 247// CHECK-NEXT: }, 248// CHECK-NEXT: "range": { 249// CHECK-NEXT: "begin": { 250// CHECK-NEXT: "offset": {{[0-9]+}}, 251// CHECK-NEXT: "col": 11, 252// CHECK-NEXT: "tokLen": 3 253// CHECK-NEXT: }, 254// CHECK-NEXT: "end": { 255// CHECK-NEXT: "offset": {{[0-9]+}}, 256// CHECK-NEXT: "col": 15, 257// CHECK-NEXT: "tokLen": 9 258// CHECK-NEXT: } 259// CHECK-NEXT: }, 260// CHECK-NEXT: "name": "varPublic", 261// CHECK-NEXT: "type": { 262// CHECK-NEXT: "qualType": "int" 263// CHECK-NEXT: }, 264// CHECK-NEXT: "access": "public" 265// CHECK-NEXT: }, 266// CHECK-NEXT: { 267// CHECK-NEXT: "id": "0x{{.*}}", 268// CHECK-NEXT: "kind": "ObjCIvarDecl", 269// CHECK-NEXT: "loc": { 270// CHECK-NEXT: "offset": {{[0-9]+}}, 271// CHECK-NEXT: "line": 17, 272// CHECK-NEXT: "col": 16, 273// CHECK-NEXT: "tokLen": 10 274// CHECK-NEXT: }, 275// CHECK-NEXT: "range": { 276// CHECK-NEXT: "begin": { 277// CHECK-NEXT: "offset": {{[0-9]+}}, 278// CHECK-NEXT: "col": 12, 279// CHECK-NEXT: "tokLen": 3 280// CHECK-NEXT: }, 281// CHECK-NEXT: "end": { 282// CHECK-NEXT: "offset": {{[0-9]+}}, 283// CHECK-NEXT: "col": 16, 284// CHECK-NEXT: "tokLen": 10 285// CHECK-NEXT: } 286// CHECK-NEXT: }, 287// CHECK-NEXT: "name": "varPackage", 288// CHECK-NEXT: "type": { 289// CHECK-NEXT: "qualType": "int" 290// CHECK-NEXT: }, 291// CHECK-NEXT: "access": "package" 292// CHECK-NEXT: } 293// CHECK-NEXT: ] 294// CHECK-NEXT: } 295 296 297// CHECK-NOT: {{^}}Dumping 298// CHECK: "kind": "ObjCMethodDecl", 299// CHECK-NEXT: "loc": { 300// CHECK-NEXT: "offset": {{[0-9]+}}, 301// CHECK-NEXT: "file": "{{.*}}", 302// CHECK-NEXT: "line": 23, 303// CHECK-NEXT: "col": 1, 304// CHECK-NEXT: "tokLen": 1 305// CHECK-NEXT: }, 306// CHECK-NEXT: "range": { 307// CHECK-NEXT: "begin": { 308// CHECK-NEXT: "offset": {{[0-9]+}}, 309// CHECK-NEXT: "col": 1, 310// CHECK-NEXT: "tokLen": 1 311// CHECK-NEXT: }, 312// CHECK-NEXT: "end": { 313// CHECK-NEXT: "offset": {{[0-9]+}}, 314// CHECK-NEXT: "col": 40, 315// CHECK-NEXT: "tokLen": 1 316// CHECK-NEXT: } 317// CHECK-NEXT: }, 318// CHECK-NEXT: "name": "TestObjCMethodDecl:", 319// CHECK-NEXT: "mangledName": "-[testObjCMethodDecl TestObjCMethodDecl:]", 320// CHECK-NEXT: "returnType": { 321// CHECK-NEXT: "qualType": "int" 322// CHECK-NEXT: }, 323// CHECK-NEXT: "instance": true, 324// CHECK-NEXT: "variadic": true, 325// CHECK-NEXT: "inner": [ 326// CHECK-NEXT: { 327// CHECK-NEXT: "id": "0x{{.*}}", 328// CHECK-NEXT: "kind": "ParmVarDecl", 329// CHECK-NEXT: "loc": { 330// CHECK-NEXT: "offset": {{[0-9]+}}, 331// CHECK-NEXT: "col": 34, 332// CHECK-NEXT: "tokLen": 1 333// CHECK-NEXT: }, 334// CHECK-NEXT: "range": { 335// CHECK-NEXT: "begin": { 336// CHECK-NEXT: "offset": {{[0-9]+}}, 337// CHECK-NEXT: "col": 30, 338// CHECK-NEXT: "tokLen": 3 339// CHECK-NEXT: }, 340// CHECK-NEXT: "end": { 341// CHECK-NEXT: "offset": {{[0-9]+}}, 342// CHECK-NEXT: "col": 34, 343// CHECK-NEXT: "tokLen": 1 344// CHECK-NEXT: } 345// CHECK-NEXT: }, 346// CHECK-NEXT: "name": "i", 347// CHECK-NEXT: "type": { 348// CHECK-NEXT: "qualType": "int" 349// CHECK-NEXT: } 350// CHECK-NEXT: } 351// CHECK-NEXT: ] 352// CHECK-NEXT: } 353 354 355// CHECK-NOT: {{^}}Dumping 356// CHECK: "kind": "ObjCMethodDecl", 357// CHECK-NEXT: "loc": { 358// CHECK-NEXT: "offset": {{[0-9]+}}, 359// CHECK-NEXT: "file": "{{.*}}", 360// CHECK-NEXT: "line": 27, 361// CHECK-NEXT: "col": 1, 362// CHECK-NEXT: "tokLen": 1 363// CHECK-NEXT: }, 364// CHECK-NEXT: "range": { 365// CHECK-NEXT: "begin": { 366// CHECK-NEXT: "offset": {{[0-9]+}}, 367// CHECK-NEXT: "col": 1, 368// CHECK-NEXT: "tokLen": 1 369// CHECK-NEXT: }, 370// CHECK-NEXT: "end": { 371// CHECK-NEXT: "offset": {{[0-9]+}}, 372// CHECK-NEXT: "line": 29, 373// CHECK-NEXT: "col": 1, 374// CHECK-NEXT: "tokLen": 1 375// CHECK-NEXT: } 376// CHECK-NEXT: }, 377// CHECK-NEXT: "name": "TestObjCMethodDecl:", 378// CHECK-NEXT: "mangledName": "-[testObjCMethodDecl TestObjCMethodDecl:]", 379// CHECK-NEXT: "returnType": { 380// CHECK-NEXT: "qualType": "int" 381// CHECK-NEXT: }, 382// CHECK-NEXT: "instance": true, 383// CHECK-NEXT: "variadic": true, 384// CHECK-NEXT: "inner": [ 385// CHECK-NEXT: { 386// CHECK-NEXT: "id": "0x{{.*}}", 387// CHECK-NEXT: "kind": "ImplicitParamDecl", 388// CHECK-NEXT: "loc": {}, 389// CHECK-NEXT: "range": { 390// CHECK-NEXT: "begin": {}, 391// CHECK-NEXT: "end": {} 392// CHECK-NEXT: }, 393// CHECK-NEXT: "isImplicit": true, 394// CHECK-NEXT: "name": "self", 395// CHECK-NEXT: "type": { 396// CHECK-NEXT: "qualType": "testObjCMethodDecl *" 397// CHECK-NEXT: } 398// CHECK-NEXT: }, 399// CHECK-NEXT: { 400// CHECK-NEXT: "id": "0x{{.*}}", 401// CHECK-NEXT: "kind": "ImplicitParamDecl", 402// CHECK-NEXT: "loc": {}, 403// CHECK-NEXT: "range": { 404// CHECK-NEXT: "begin": {}, 405// CHECK-NEXT: "end": {} 406// CHECK-NEXT: }, 407// CHECK-NEXT: "isImplicit": true, 408// CHECK-NEXT: "name": "_cmd", 409// CHECK-NEXT: "type": { 410// CHECK-NEXT: "desugaredQualType": "SEL *", 411// CHECK-NEXT: "qualType": "SEL", 412// CHECK-NEXT: "typeAliasDeclId": "0x{{.*}}" 413// CHECK-NEXT: } 414// CHECK-NEXT: }, 415// CHECK-NEXT: { 416// CHECK-NEXT: "id": "0x{{.*}}", 417// CHECK-NEXT: "kind": "ParmVarDecl", 418// CHECK-NEXT: "loc": { 419// CHECK-NEXT: "offset": {{[0-9]+}}, 420// CHECK-NEXT: "line": 27, 421// CHECK-NEXT: "col": 34, 422// CHECK-NEXT: "tokLen": 1 423// CHECK-NEXT: }, 424// CHECK-NEXT: "range": { 425// CHECK-NEXT: "begin": { 426// CHECK-NEXT: "offset": {{[0-9]+}}, 427// CHECK-NEXT: "col": 30, 428// CHECK-NEXT: "tokLen": 3 429// CHECK-NEXT: }, 430// CHECK-NEXT: "end": { 431// CHECK-NEXT: "offset": {{[0-9]+}}, 432// CHECK-NEXT: "col": 34, 433// CHECK-NEXT: "tokLen": 1 434// CHECK-NEXT: } 435// CHECK-NEXT: }, 436// CHECK-NEXT: "name": "i", 437// CHECK-NEXT: "type": { 438// CHECK-NEXT: "qualType": "int" 439// CHECK-NEXT: } 440// CHECK-NEXT: }, 441// CHECK-NEXT: { 442// CHECK-NEXT: "id": "0x{{.*}}", 443// CHECK-NEXT: "kind": "CompoundStmt", 444// CHECK-NEXT: "range": { 445// CHECK-NEXT: "begin": { 446// CHECK-NEXT: "offset": {{[0-9]+}}, 447// CHECK-NEXT: "col": 41, 448// CHECK-NEXT: "tokLen": 1 449// CHECK-NEXT: }, 450// CHECK-NEXT: "end": { 451// CHECK-NEXT: "offset": {{[0-9]+}}, 452// CHECK-NEXT: "line": 29, 453// CHECK-NEXT: "col": 1, 454// CHECK-NEXT: "tokLen": 1 455// CHECK-NEXT: } 456// CHECK-NEXT: }, 457// CHECK-NEXT: "inner": [ 458// CHECK-NEXT: { 459// CHECK-NEXT: "id": "0x{{.*}}", 460// CHECK-NEXT: "kind": "ReturnStmt", 461// CHECK-NEXT: "range": { 462// CHECK-NEXT: "begin": { 463// CHECK-NEXT: "offset": {{[0-9]+}}, 464// CHECK-NEXT: "line": 28, 465// CHECK-NEXT: "col": 3, 466// CHECK-NEXT: "tokLen": 6 467// CHECK-NEXT: }, 468// CHECK-NEXT: "end": { 469// CHECK-NEXT: "offset": {{[0-9]+}}, 470// CHECK-NEXT: "col": 10, 471// CHECK-NEXT: "tokLen": 1 472// CHECK-NEXT: } 473// CHECK-NEXT: }, 474// CHECK-NEXT: "inner": [ 475// CHECK-NEXT: { 476// CHECK-NEXT: "id": "0x{{.*}}", 477// CHECK-NEXT: "kind": "IntegerLiteral", 478// CHECK-NEXT: "range": { 479// CHECK-NEXT: "begin": { 480// CHECK-NEXT: "offset": {{[0-9]+}}, 481// CHECK-NEXT: "col": 10, 482// CHECK-NEXT: "tokLen": 1 483// CHECK-NEXT: }, 484// CHECK-NEXT: "end": { 485// CHECK-NEXT: "offset": {{[0-9]+}}, 486// CHECK-NEXT: "col": 10, 487// CHECK-NEXT: "tokLen": 1 488// CHECK-NEXT: } 489// CHECK-NEXT: }, 490// CHECK-NEXT: "type": { 491// CHECK-NEXT: "qualType": "int" 492// CHECK-NEXT: }, 493// CHECK-NEXT: "valueCategory": "prvalue", 494// CHECK-NEXT: "value": "0" 495// CHECK-NEXT: } 496// CHECK-NEXT: ] 497// CHECK-NEXT: } 498// CHECK-NEXT: ] 499// CHECK-NEXT: } 500// CHECK-NEXT: ] 501// CHECK-NEXT: } 502 503 504// CHECK-NOT: {{^}}Dumping 505// CHECK: "kind": "ObjCProtocolDecl", 506// CHECK-NEXT: "loc": { 507// CHECK-NEXT: "offset": {{[0-9]+}}, 508// CHECK-NEXT: "file": "{{.*}}", 509// CHECK-NEXT: "line": 32, 510// CHECK-NEXT: "col": 11, 511// CHECK-NEXT: "tokLen": 20 512// CHECK-NEXT: }, 513// CHECK-NEXT: "range": { 514// CHECK-NEXT: "begin": { 515// CHECK-NEXT: "offset": {{[0-9]+}}, 516// CHECK-NEXT: "col": 1, 517// CHECK-NEXT: "tokLen": 1 518// CHECK-NEXT: }, 519// CHECK-NEXT: "end": { 520// CHECK-NEXT: "offset": {{[0-9]+}}, 521// CHECK-NEXT: "line": 34, 522// CHECK-NEXT: "col": 2, 523// CHECK-NEXT: "tokLen": 3 524// CHECK-NEXT: } 525// CHECK-NEXT: }, 526// CHECK-NEXT: "name": "TestObjCProtocolDecl", 527// CHECK-NEXT: "inner": [ 528// CHECK-NEXT: { 529// CHECK-NEXT: "id": "0x{{.*}}", 530// CHECK-NEXT: "kind": "ObjCMethodDecl", 531// CHECK-NEXT: "loc": { 532// CHECK-NEXT: "offset": {{[0-9]+}}, 533// CHECK-NEXT: "line": 33, 534// CHECK-NEXT: "col": 1, 535// CHECK-NEXT: "tokLen": 1 536// CHECK-NEXT: }, 537// CHECK-NEXT: "range": { 538// CHECK-NEXT: "begin": { 539// CHECK-NEXT: "offset": {{[0-9]+}}, 540// CHECK-NEXT: "col": 1, 541// CHECK-NEXT: "tokLen": 1 542// CHECK-NEXT: }, 543// CHECK-NEXT: "end": { 544// CHECK-NEXT: "offset": {{[0-9]+}}, 545// CHECK-NEXT: "col": 13, 546// CHECK-NEXT: "tokLen": 1 547// CHECK-NEXT: } 548// CHECK-NEXT: }, 549// CHECK-NEXT: "name": "foo", 550// CHECK-NEXT: "mangledName": "-[TestObjCProtocolDecl foo]", 551// CHECK-NEXT: "returnType": { 552// CHECK-NEXT: "qualType": "void" 553// CHECK-NEXT: }, 554// CHECK-NEXT: "instance": true 555// CHECK-NEXT: } 556// CHECK-NEXT: ] 557// CHECK-NEXT: } 558 559 560// CHECK-NOT: {{^}}Dumping 561// CHECK: "kind": "ObjCInterfaceDecl", 562// CHECK-NEXT: "loc": { 563// CHECK-NEXT: "offset": {{[0-9]+}}, 564// CHECK-NEXT: "file": "{{.*}}", 565// CHECK-NEXT: "line": 36, 566// CHECK-NEXT: "col": 12, 567// CHECK-NEXT: "tokLen": 13 568// CHECK-NEXT: }, 569// CHECK-NEXT: "range": { 570// CHECK-NEXT: "begin": { 571// CHECK-NEXT: "offset": {{[0-9]+}}, 572// CHECK-NEXT: "col": 1, 573// CHECK-NEXT: "tokLen": 1 574// CHECK-NEXT: }, 575// CHECK-NEXT: "end": { 576// CHECK-NEXT: "offset": {{[0-9]+}}, 577// CHECK-NEXT: "line": 38, 578// CHECK-NEXT: "col": 2, 579// CHECK-NEXT: "tokLen": 3 580// CHECK-NEXT: } 581// CHECK-NEXT: }, 582// CHECK-NEXT: "name": "TestObjCClass", 583// CHECK-NEXT: "mangledName": "_OBJC_CLASS_$_TestObjCClass", 584// CHECK-NEXT: "super": { 585// CHECK-NEXT: "id": "0x{{.*}}", 586// CHECK-NEXT: "kind": "ObjCInterfaceDecl", 587// CHECK-NEXT: "name": "A" 588// CHECK-NEXT: }, 589// CHECK-NEXT: "implementation": { 590// CHECK-NEXT: "id": "0x{{.*}}", 591// CHECK-NEXT: "kind": "ObjCImplementationDecl", 592// CHECK-NEXT: "name": "TestObjCClass" 593// CHECK-NEXT: }, 594// CHECK-NEXT: "protocols": [ 595// CHECK-NEXT: { 596// CHECK-NEXT: "id": "0x{{.*}}", 597// CHECK-NEXT: "kind": "ObjCProtocolDecl", 598// CHECK-NEXT: "name": "P" 599// CHECK-NEXT: } 600// CHECK-NEXT: ], 601// CHECK-NEXT: "inner": [ 602// CHECK-NEXT: { 603// CHECK-NEXT: "id": "0x{{.*}}", 604// CHECK-NEXT: "kind": "ObjCMethodDecl", 605// CHECK-NEXT: "loc": { 606// CHECK-NEXT: "offset": {{[0-9]+}}, 607// CHECK-NEXT: "line": 37, 608// CHECK-NEXT: "col": 1, 609// CHECK-NEXT: "tokLen": 1 610// CHECK-NEXT: }, 611// CHECK-NEXT: "range": { 612// CHECK-NEXT: "begin": { 613// CHECK-NEXT: "offset": {{[0-9]+}}, 614// CHECK-NEXT: "col": 1, 615// CHECK-NEXT: "tokLen": 1 616// CHECK-NEXT: }, 617// CHECK-NEXT: "end": { 618// CHECK-NEXT: "offset": {{[0-9]+}}, 619// CHECK-NEXT: "col": 13, 620// CHECK-NEXT: "tokLen": 1 621// CHECK-NEXT: } 622// CHECK-NEXT: }, 623// CHECK-NEXT: "name": "foo", 624// CHECK-NEXT: "mangledName": "-[TestObjCClass foo]", 625// CHECK-NEXT: "returnType": { 626// CHECK-NEXT: "qualType": "void" 627// CHECK-NEXT: }, 628// CHECK-NEXT: "instance": true 629// CHECK-NEXT: } 630// CHECK-NEXT: ] 631// CHECK-NEXT: } 632 633 634// CHECK-NOT: {{^}}Dumping 635// CHECK: "kind": "ObjCImplementationDecl", 636// CHECK-NEXT: "loc": { 637// CHECK-NEXT: "offset": {{[0-9]+}}, 638// CHECK-NEXT: "file": "{{.*}}", 639// CHECK-NEXT: "line": 40, 640// CHECK-NEXT: "col": 17, 641// CHECK-NEXT: "tokLen": 13 642// CHECK-NEXT: }, 643// CHECK-NEXT: "range": { 644// CHECK-NEXT: "begin": { 645// CHECK-NEXT: "offset": {{[0-9]+}}, 646// CHECK-NEXT: "col": 1, 647// CHECK-NEXT: "tokLen": 1 648// CHECK-NEXT: }, 649// CHECK-NEXT: "end": { 650// CHECK-NEXT: "offset": {{[0-9]+}}, 651// CHECK-NEXT: "line": 45, 652// CHECK-NEXT: "col": 1, 653// CHECK-NEXT: "tokLen": 1 654// CHECK-NEXT: } 655// CHECK-NEXT: }, 656// CHECK-NEXT: "name": "TestObjCClass", 657// CHECK-NEXT: "super": { 658// CHECK-NEXT: "id": "0x{{.*}}", 659// CHECK-NEXT: "kind": "ObjCInterfaceDecl", 660// CHECK-NEXT: "name": "A" 661// CHECK-NEXT: }, 662// CHECK-NEXT: "interface": { 663// CHECK-NEXT: "id": "0x{{.*}}", 664// CHECK-NEXT: "kind": "ObjCInterfaceDecl", 665// CHECK-NEXT: "name": "TestObjCClass" 666// CHECK-NEXT: }, 667// CHECK-NEXT: "inner": [ 668// CHECK-NEXT: { 669// CHECK-NEXT: "id": "0x{{.*}}", 670// CHECK-NEXT: "kind": "ObjCIvarDecl", 671// CHECK-NEXT: "loc": { 672// CHECK-NEXT: "offset": {{[0-9]+}}, 673// CHECK-NEXT: "line": 41, 674// CHECK-NEXT: "col": 7, 675// CHECK-NEXT: "tokLen": 1 676// CHECK-NEXT: }, 677// CHECK-NEXT: "range": { 678// CHECK-NEXT: "begin": { 679// CHECK-NEXT: "offset": {{[0-9]+}}, 680// CHECK-NEXT: "col": 3, 681// CHECK-NEXT: "tokLen": 3 682// CHECK-NEXT: }, 683// CHECK-NEXT: "end": { 684// CHECK-NEXT: "offset": {{[0-9]+}}, 685// CHECK-NEXT: "col": 7, 686// CHECK-NEXT: "tokLen": 1 687// CHECK-NEXT: } 688// CHECK-NEXT: }, 689// CHECK-NEXT: "name": "i", 690// CHECK-NEXT: "type": { 691// CHECK-NEXT: "qualType": "int" 692// CHECK-NEXT: }, 693// CHECK-NEXT: "access": "private" 694// CHECK-NEXT: }, 695// CHECK-NEXT: { 696// CHECK-NEXT: "id": "0x{{.*}}", 697// CHECK-NEXT: "kind": "ObjCMethodDecl", 698// CHECK-NEXT: "loc": { 699// CHECK-NEXT: "offset": {{[0-9]+}}, 700// CHECK-NEXT: "line": 43, 701// CHECK-NEXT: "col": 1, 702// CHECK-NEXT: "tokLen": 1 703// CHECK-NEXT: }, 704// CHECK-NEXT: "range": { 705// CHECK-NEXT: "begin": { 706// CHECK-NEXT: "offset": {{[0-9]+}}, 707// CHECK-NEXT: "col": 1, 708// CHECK-NEXT: "tokLen": 1 709// CHECK-NEXT: }, 710// CHECK-NEXT: "end": { 711// CHECK-NEXT: "offset": {{[0-9]+}}, 712// CHECK-NEXT: "line": 44, 713// CHECK-NEXT: "col": 1, 714// CHECK-NEXT: "tokLen": 1 715// CHECK-NEXT: } 716// CHECK-NEXT: }, 717// CHECK-NEXT: "name": "foo", 718// CHECK-NEXT: "mangledName": "-[TestObjCClass foo]", 719// CHECK-NEXT: "returnType": { 720// CHECK-NEXT: "qualType": "void" 721// CHECK-NEXT: }, 722// CHECK-NEXT: "instance": true, 723// CHECK-NEXT: "inner": [ 724// CHECK-NEXT: { 725// CHECK-NEXT: "id": "0x{{.*}}", 726// CHECK-NEXT: "kind": "ImplicitParamDecl", 727// CHECK-NEXT: "loc": {}, 728// CHECK-NEXT: "range": { 729// CHECK-NEXT: "begin": {}, 730// CHECK-NEXT: "end": {} 731// CHECK-NEXT: }, 732// CHECK-NEXT: "isImplicit": true, 733// CHECK-NEXT: "name": "self", 734// CHECK-NEXT: "type": { 735// CHECK-NEXT: "qualType": "TestObjCClass *" 736// CHECK-NEXT: } 737// CHECK-NEXT: }, 738// CHECK-NEXT: { 739// CHECK-NEXT: "id": "0x{{.*}}", 740// CHECK-NEXT: "kind": "ImplicitParamDecl", 741// CHECK-NEXT: "loc": {}, 742// CHECK-NEXT: "range": { 743// CHECK-NEXT: "begin": {}, 744// CHECK-NEXT: "end": {} 745// CHECK-NEXT: }, 746// CHECK-NEXT: "isImplicit": true, 747// CHECK-NEXT: "name": "_cmd", 748// CHECK-NEXT: "type": { 749// CHECK-NEXT: "desugaredQualType": "SEL *", 750// CHECK-NEXT: "qualType": "SEL", 751// CHECK-NEXT: "typeAliasDeclId": "0x{{.*}}" 752// CHECK-NEXT: } 753// CHECK-NEXT: }, 754// CHECK-NEXT: { 755// CHECK-NEXT: "id": "0x{{.*}}", 756// CHECK-NEXT: "kind": "CompoundStmt", 757// CHECK-NEXT: "range": { 758// CHECK-NEXT: "begin": { 759// CHECK-NEXT: "offset": {{[0-9]+}}, 760// CHECK-NEXT: "line": 43, 761// CHECK-NEXT: "col": 14, 762// CHECK-NEXT: "tokLen": 1 763// CHECK-NEXT: }, 764// CHECK-NEXT: "end": { 765// CHECK-NEXT: "offset": {{[0-9]+}}, 766// CHECK-NEXT: "line": 44, 767// CHECK-NEXT: "col": 1, 768// CHECK-NEXT: "tokLen": 1 769// CHECK-NEXT: } 770// CHECK-NEXT: } 771// CHECK-NEXT: } 772// CHECK-NEXT: ] 773// CHECK-NEXT: } 774// CHECK-NEXT: ] 775// CHECK-NEXT: } 776 777 778// CHECK-NOT: {{^}}Dumping 779// CHECK: "kind": "ObjCCategoryDecl", 780// CHECK-NEXT: "loc": { 781// CHECK-NEXT: "offset": {{[0-9]+}}, 782// CHECK-NEXT: "file": "{{.*}}", 783// CHECK-NEXT: "line": 47, 784// CHECK-NEXT: "col": 12, 785// CHECK-NEXT: "tokLen": 13 786// CHECK-NEXT: }, 787// CHECK-NEXT: "range": { 788// CHECK-NEXT: "begin": { 789// CHECK-NEXT: "offset": {{[0-9]+}}, 790// CHECK-NEXT: "col": 1, 791// CHECK-NEXT: "tokLen": 1 792// CHECK-NEXT: }, 793// CHECK-NEXT: "end": { 794// CHECK-NEXT: "offset": {{[0-9]+}}, 795// CHECK-NEXT: "line": 49, 796// CHECK-NEXT: "col": 2, 797// CHECK-NEXT: "tokLen": 3 798// CHECK-NEXT: } 799// CHECK-NEXT: }, 800// CHECK-NEXT: "name": "TestObjCCategoryDecl", 801// CHECK-NEXT: "interface": { 802// CHECK-NEXT: "id": "0x{{.*}}", 803// CHECK-NEXT: "kind": "ObjCInterfaceDecl", 804// CHECK-NEXT: "name": "TestObjCClass" 805// CHECK-NEXT: }, 806// CHECK-NEXT: "implementation": { 807// CHECK-NEXT: "id": "0x{{.*}}", 808// CHECK-NEXT: "kind": "ObjCCategoryImplDecl", 809// CHECK-NEXT: "name": "TestObjCCategoryDecl" 810// CHECK-NEXT: }, 811// CHECK-NEXT: "protocols": [ 812// CHECK-NEXT: { 813// CHECK-NEXT: "id": "0x{{.*}}", 814// CHECK-NEXT: "kind": "ObjCProtocolDecl", 815// CHECK-NEXT: "name": "P" 816// CHECK-NEXT: } 817// CHECK-NEXT: ], 818// CHECK-NEXT: "inner": [ 819// CHECK-NEXT: { 820// CHECK-NEXT: "id": "0x{{.*}}", 821// CHECK-NEXT: "kind": "ObjCMethodDecl", 822// CHECK-NEXT: "loc": { 823// CHECK-NEXT: "offset": {{[0-9]+}}, 824// CHECK-NEXT: "line": 48, 825// CHECK-NEXT: "col": 1, 826// CHECK-NEXT: "tokLen": 1 827// CHECK-NEXT: }, 828// CHECK-NEXT: "range": { 829// CHECK-NEXT: "begin": { 830// CHECK-NEXT: "offset": {{[0-9]+}}, 831// CHECK-NEXT: "col": 1, 832// CHECK-NEXT: "tokLen": 1 833// CHECK-NEXT: }, 834// CHECK-NEXT: "end": { 835// CHECK-NEXT: "offset": {{[0-9]+}}, 836// CHECK-NEXT: "col": 13, 837// CHECK-NEXT: "tokLen": 1 838// CHECK-NEXT: } 839// CHECK-NEXT: }, 840// CHECK-NEXT: "name": "bar", 841// CHECK-NEXT: "mangledName": "-[TestObjCClass(TestObjCCategoryDecl) bar]", 842// CHECK-NEXT: "returnType": { 843// CHECK-NEXT: "qualType": "void" 844// CHECK-NEXT: }, 845// CHECK-NEXT: "instance": true 846// CHECK-NEXT: } 847// CHECK-NEXT: ] 848// CHECK-NEXT: } 849 850 851// CHECK-NOT: {{^}}Dumping 852// CHECK: "kind": "ObjCInterfaceDecl", 853// CHECK-NEXT: "loc": { 854// CHECK-NEXT: "offset": {{[0-9]+}}, 855// CHECK-NEXT: "file": "{{.*}}", 856// CHECK-NEXT: "line": 51, 857// CHECK-NEXT: "col": 12, 858// CHECK-NEXT: "tokLen": 20 859// CHECK-NEXT: }, 860// CHECK-NEXT: "range": { 861// CHECK-NEXT: "begin": { 862// CHECK-NEXT: "offset": {{[0-9]+}}, 863// CHECK-NEXT: "col": 1, 864// CHECK-NEXT: "tokLen": 1 865// CHECK-NEXT: }, 866// CHECK-NEXT: "end": { 867// CHECK-NEXT: "offset": {{[0-9]+}}, 868// CHECK-NEXT: "line": 53, 869// CHECK-NEXT: "col": 2, 870// CHECK-NEXT: "tokLen": 3 871// CHECK-NEXT: } 872// CHECK-NEXT: }, 873// CHECK-NEXT: "name": "TestGenericInterface", 874// CHECK-NEXT: "mangledName": "_OBJC_CLASS_$_TestGenericInterface", 875// CHECK-NEXT: "super": { 876// CHECK-NEXT: "id": "0x{{.*}}", 877// CHECK-NEXT: "kind": "ObjCInterfaceDecl", 878// CHECK-NEXT: "name": "A" 879// CHECK-NEXT: }, 880// CHECK-NEXT: "implementation": { 881// CHECK-NEXT: "id": "0x0" 882// CHECK-NEXT: }, 883// CHECK-NEXT: "protocols": [ 884// CHECK-NEXT: { 885// CHECK-NEXT: "id": "0x{{.*}}", 886// CHECK-NEXT: "kind": "ObjCProtocolDecl", 887// CHECK-NEXT: "name": "P" 888// CHECK-NEXT: } 889// CHECK-NEXT: ], 890// CHECK-NEXT: "inner": [ 891// CHECK-NEXT: { 892// CHECK-NEXT: "id": "0x{{.*}}", 893// CHECK-NEXT: "kind": "ObjCTypeParamDecl", 894// CHECK-NEXT: "loc": { 895// CHECK-NEXT: "offset": {{[0-9]+}}, 896// CHECK-NEXT: "line": 51, 897// CHECK-NEXT: "col": 33, 898// CHECK-NEXT: "tokLen": 1 899// CHECK-NEXT: }, 900// CHECK-NEXT: "range": { 901// CHECK-NEXT: "begin": { 902// CHECK-NEXT: "offset": {{[0-9]+}}, 903// CHECK-NEXT: "col": 33, 904// CHECK-NEXT: "tokLen": 1 905// CHECK-NEXT: }, 906// CHECK-NEXT: "end": { 907// CHECK-NEXT: "offset": {{[0-9]+}}, 908// CHECK-NEXT: "col": 33, 909// CHECK-NEXT: "tokLen": 1 910// CHECK-NEXT: } 911// CHECK-NEXT: }, 912// CHECK-NEXT: "name": "T", 913// CHECK-NEXT: "type": { 914// CHECK-NEXT: "qualType": "id", 915// CHECK-NEXT: "typeAliasDeclId": "0x{{.*}}" 916// CHECK-NEXT: } 917// CHECK-NEXT: } 918// CHECK-NEXT: ] 919// CHECK-NEXT: } 920 921 922// CHECK-NOT: {{^}}Dumping 923// CHECK: "kind": "ObjCCategoryImplDecl", 924// CHECK-NEXT: "loc": { 925// CHECK-NEXT: "offset": {{[0-9]+}}, 926// CHECK-NEXT: "file": "{{.*}}", 927// CHECK-NEXT: "line": 55, 928// CHECK-NEXT: "col": 17, 929// CHECK-NEXT: "tokLen": 13 930// CHECK-NEXT: }, 931// CHECK-NEXT: "range": { 932// CHECK-NEXT: "begin": { 933// CHECK-NEXT: "offset": {{[0-9]+}}, 934// CHECK-NEXT: "col": 1, 935// CHECK-NEXT: "tokLen": 1 936// CHECK-NEXT: }, 937// CHECK-NEXT: "end": { 938// CHECK-NEXT: "offset": {{[0-9]+}}, 939// CHECK-NEXT: "line": 58, 940// CHECK-NEXT: "col": 1, 941// CHECK-NEXT: "tokLen": 1 942// CHECK-NEXT: } 943// CHECK-NEXT: }, 944// CHECK-NEXT: "name": "TestObjCCategoryDecl", 945// CHECK-NEXT: "interface": { 946// CHECK-NEXT: "id": "0x{{.*}}", 947// CHECK-NEXT: "kind": "ObjCInterfaceDecl", 948// CHECK-NEXT: "name": "TestObjCClass" 949// CHECK-NEXT: }, 950// CHECK-NEXT: "categoryDecl": { 951// CHECK-NEXT: "id": "0x{{.*}}", 952// CHECK-NEXT: "kind": "ObjCCategoryDecl", 953// CHECK-NEXT: "name": "TestObjCCategoryDecl" 954// CHECK-NEXT: }, 955// CHECK-NEXT: "inner": [ 956// CHECK-NEXT: { 957// CHECK-NEXT: "id": "0x{{.*}}", 958// CHECK-NEXT: "kind": "ObjCMethodDecl", 959// CHECK-NEXT: "loc": { 960// CHECK-NEXT: "offset": {{[0-9]+}}, 961// CHECK-NEXT: "line": 56, 962// CHECK-NEXT: "col": 1, 963// CHECK-NEXT: "tokLen": 1 964// CHECK-NEXT: }, 965// CHECK-NEXT: "range": { 966// CHECK-NEXT: "begin": { 967// CHECK-NEXT: "offset": {{[0-9]+}}, 968// CHECK-NEXT: "col": 1, 969// CHECK-NEXT: "tokLen": 1 970// CHECK-NEXT: }, 971// CHECK-NEXT: "end": { 972// CHECK-NEXT: "offset": {{[0-9]+}}, 973// CHECK-NEXT: "line": 57, 974// CHECK-NEXT: "col": 1, 975// CHECK-NEXT: "tokLen": 1 976// CHECK-NEXT: } 977// CHECK-NEXT: }, 978// CHECK-NEXT: "name": "bar", 979// CHECK-NEXT: "mangledName": "-[TestObjCClass(TestObjCCategoryDecl) bar]", 980// CHECK-NEXT: "returnType": { 981// CHECK-NEXT: "qualType": "void" 982// CHECK-NEXT: }, 983// CHECK-NEXT: "instance": true, 984// CHECK-NEXT: "inner": [ 985// CHECK-NEXT: { 986// CHECK-NEXT: "id": "0x{{.*}}", 987// CHECK-NEXT: "kind": "ImplicitParamDecl", 988// CHECK-NEXT: "loc": {}, 989// CHECK-NEXT: "range": { 990// CHECK-NEXT: "begin": {}, 991// CHECK-NEXT: "end": {} 992// CHECK-NEXT: }, 993// CHECK-NEXT: "isImplicit": true, 994// CHECK-NEXT: "name": "self", 995// CHECK-NEXT: "type": { 996// CHECK-NEXT: "qualType": "TestObjCClass *" 997// CHECK-NEXT: } 998// CHECK-NEXT: }, 999// CHECK-NEXT: { 1000// CHECK-NEXT: "id": "0x{{.*}}", 1001// CHECK-NEXT: "kind": "ImplicitParamDecl", 1002// CHECK-NEXT: "loc": {}, 1003// CHECK-NEXT: "range": { 1004// CHECK-NEXT: "begin": {}, 1005// CHECK-NEXT: "end": {} 1006// CHECK-NEXT: }, 1007// CHECK-NEXT: "isImplicit": true, 1008// CHECK-NEXT: "name": "_cmd", 1009// CHECK-NEXT: "type": { 1010// CHECK-NEXT: "desugaredQualType": "SEL *", 1011// CHECK-NEXT: "qualType": "SEL", 1012// CHECK-NEXT: "typeAliasDeclId": "0x{{.*}}" 1013// CHECK-NEXT: } 1014// CHECK-NEXT: }, 1015// CHECK-NEXT: { 1016// CHECK-NEXT: "id": "0x{{.*}}", 1017// CHECK-NEXT: "kind": "CompoundStmt", 1018// CHECK-NEXT: "range": { 1019// CHECK-NEXT: "begin": { 1020// CHECK-NEXT: "offset": {{[0-9]+}}, 1021// CHECK-NEXT: "line": 56, 1022// CHECK-NEXT: "col": 14, 1023// CHECK-NEXT: "tokLen": 1 1024// CHECK-NEXT: }, 1025// CHECK-NEXT: "end": { 1026// CHECK-NEXT: "offset": {{[0-9]+}}, 1027// CHECK-NEXT: "line": 57, 1028// CHECK-NEXT: "col": 1, 1029// CHECK-NEXT: "tokLen": 1 1030// CHECK-NEXT: } 1031// CHECK-NEXT: } 1032// CHECK-NEXT: } 1033// CHECK-NEXT: ] 1034// CHECK-NEXT: } 1035// CHECK-NEXT: ] 1036// CHECK-NEXT: } 1037 1038 1039// CHECK-NOT: {{^}}Dumping 1040// CHECK: "kind": "ObjCCompatibleAliasDecl", 1041// CHECK-NEXT: "loc": { 1042// CHECK-NEXT: "offset": {{[0-9]+}}, 1043// CHECK-NEXT: "file": "{{.*}}", 1044// CHECK-NEXT: "line": 60, 1045// CHECK-NEXT: "col": 1, 1046// CHECK-NEXT: "tokLen": 1 1047// CHECK-NEXT: }, 1048// CHECK-NEXT: "range": { 1049// CHECK-NEXT: "begin": { 1050// CHECK-NEXT: "offset": {{[0-9]+}}, 1051// CHECK-NEXT: "col": 1, 1052// CHECK-NEXT: "tokLen": 1 1053// CHECK-NEXT: }, 1054// CHECK-NEXT: "end": { 1055// CHECK-NEXT: "offset": {{[0-9]+}}, 1056// CHECK-NEXT: "col": 1, 1057// CHECK-NEXT: "tokLen": 1 1058// CHECK-NEXT: } 1059// CHECK-NEXT: }, 1060// CHECK-NEXT: "name": "TestObjCCompatibleAliasDecl", 1061// CHECK-NEXT: "interface": { 1062// CHECK-NEXT: "id": "0x{{.*}}", 1063// CHECK-NEXT: "kind": "ObjCInterfaceDecl", 1064// CHECK-NEXT: "name": "A" 1065// CHECK-NEXT: } 1066// CHECK-NEXT: } 1067 1068 1069// CHECK-NOT: {{^}}Dumping 1070// CHECK: "kind": "ObjCInterfaceDecl", 1071// CHECK-NEXT: "loc": { 1072// CHECK-NEXT: "offset": {{[0-9]+}}, 1073// CHECK-NEXT: "file": "{{.*}}", 1074// CHECK-NEXT: "line": 62, 1075// CHECK-NEXT: "col": 12, 1076// CHECK-NEXT: "tokLen": 16 1077// CHECK-NEXT: }, 1078// CHECK-NEXT: "range": { 1079// CHECK-NEXT: "begin": { 1080// CHECK-NEXT: "offset": {{[0-9]+}}, 1081// CHECK-NEXT: "col": 1, 1082// CHECK-NEXT: "tokLen": 1 1083// CHECK-NEXT: }, 1084// CHECK-NEXT: "end": { 1085// CHECK-NEXT: "offset": {{[0-9]+}}, 1086// CHECK-NEXT: "line": 65, 1087// CHECK-NEXT: "col": 2, 1088// CHECK-NEXT: "tokLen": 3 1089// CHECK-NEXT: } 1090// CHECK-NEXT: }, 1091// CHECK-NEXT: "name": "TestObjCProperty", 1092// CHECK-NEXT: "mangledName": "_OBJC_CLASS_$_TestObjCProperty", 1093// CHECK-NEXT: "super": { 1094// CHECK-NEXT: "id": "0x{{.*}}", 1095// CHECK-NEXT: "kind": "ObjCInterfaceDecl", 1096// CHECK-NEXT: "name": "A" 1097// CHECK-NEXT: }, 1098// CHECK-NEXT: "implementation": { 1099// CHECK-NEXT: "id": "0x{{.*}}", 1100// CHECK-NEXT: "kind": "ObjCImplementationDecl", 1101// CHECK-NEXT: "name": "TestObjCProperty" 1102// CHECK-NEXT: }, 1103// CHECK-NEXT: "inner": [ 1104// CHECK-NEXT: { 1105// CHECK-NEXT: "id": "0x{{.*}}", 1106// CHECK-NEXT: "kind": "ObjCPropertyDecl", 1107// CHECK-NEXT: "loc": { 1108// CHECK-NEXT: "offset": {{[0-9]+}}, 1109// CHECK-NEXT: "line": 63, 1110// CHECK-NEXT: "col": 52, 1111// CHECK-NEXT: "tokLen": 3 1112// CHECK-NEXT: }, 1113// CHECK-NEXT: "range": { 1114// CHECK-NEXT: "begin": { 1115// CHECK-NEXT: "offset": {{[0-9]+}}, 1116// CHECK-NEXT: "col": 1, 1117// CHECK-NEXT: "tokLen": 1 1118// CHECK-NEXT: }, 1119// CHECK-NEXT: "end": { 1120// CHECK-NEXT: "offset": {{[0-9]+}}, 1121// CHECK-NEXT: "col": 52, 1122// CHECK-NEXT: "tokLen": 3 1123// CHECK-NEXT: } 1124// CHECK-NEXT: }, 1125// CHECK-NEXT: "name": "foo", 1126// CHECK-NEXT: "type": { 1127// CHECK-NEXT: "qualType": "int" 1128// CHECK-NEXT: }, 1129// CHECK-NEXT: "getter": { 1130// CHECK-NEXT: "id": "0x{{.*}}", 1131// CHECK-NEXT: "kind": "ObjCMethodDecl", 1132// CHECK-NEXT: "name": "getterFoo" 1133// CHECK-NEXT: }, 1134// CHECK-NEXT: "setter": { 1135// CHECK-NEXT: "id": "0x{{.*}}", 1136// CHECK-NEXT: "kind": "ObjCMethodDecl", 1137// CHECK-NEXT: "name": "setterFoo:" 1138// CHECK-NEXT: }, 1139// CHECK-NEXT: "assign": true, 1140// CHECK-NEXT: "readwrite": true, 1141// CHECK-NEXT: "atomic": true, 1142// CHECK-NEXT: "unsafe_unretained": true 1143// CHECK-NEXT: }, 1144// CHECK-NEXT: { 1145// CHECK-NEXT: "id": "0x{{.*}}", 1146// CHECK-NEXT: "kind": "ObjCPropertyDecl", 1147// CHECK-NEXT: "loc": { 1148// CHECK-NEXT: "offset": {{[0-9]+}}, 1149// CHECK-NEXT: "line": 64, 1150// CHECK-NEXT: "col": 15, 1151// CHECK-NEXT: "tokLen": 3 1152// CHECK-NEXT: }, 1153// CHECK-NEXT: "range": { 1154// CHECK-NEXT: "begin": { 1155// CHECK-NEXT: "offset": {{[0-9]+}}, 1156// CHECK-NEXT: "col": 1, 1157// CHECK-NEXT: "tokLen": 1 1158// CHECK-NEXT: }, 1159// CHECK-NEXT: "end": { 1160// CHECK-NEXT: "offset": {{[0-9]+}}, 1161// CHECK-NEXT: "col": 15, 1162// CHECK-NEXT: "tokLen": 3 1163// CHECK-NEXT: } 1164// CHECK-NEXT: }, 1165// CHECK-NEXT: "name": "bar", 1166// CHECK-NEXT: "type": { 1167// CHECK-NEXT: "qualType": "int" 1168// CHECK-NEXT: }, 1169// CHECK-NEXT: "assign": true, 1170// CHECK-NEXT: "readwrite": true, 1171// CHECK-NEXT: "atomic": true, 1172// CHECK-NEXT: "unsafe_unretained": true 1173// CHECK-NEXT: }, 1174// CHECK-NEXT: { 1175// CHECK-NEXT: "id": "0x{{.*}}", 1176// CHECK-NEXT: "kind": "ObjCMethodDecl", 1177// CHECK-NEXT: "loc": { 1178// CHECK-NEXT: "offset": {{[0-9]+}}, 1179// CHECK-NEXT: "line": 63, 1180// CHECK-NEXT: "col": 52, 1181// CHECK-NEXT: "tokLen": 3 1182// CHECK-NEXT: }, 1183// CHECK-NEXT: "range": { 1184// CHECK-NEXT: "begin": { 1185// CHECK-NEXT: "offset": {{[0-9]+}}, 1186// CHECK-NEXT: "col": 52, 1187// CHECK-NEXT: "tokLen": 3 1188// CHECK-NEXT: }, 1189// CHECK-NEXT: "end": { 1190// CHECK-NEXT: "offset": {{[0-9]+}}, 1191// CHECK-NEXT: "col": 52, 1192// CHECK-NEXT: "tokLen": 3 1193// CHECK-NEXT: } 1194// CHECK-NEXT: }, 1195// CHECK-NEXT: "isImplicit": true, 1196// CHECK-NEXT: "name": "getterFoo", 1197// CHECK-NEXT: "mangledName": "-[TestObjCProperty getterFoo]", 1198// CHECK-NEXT: "returnType": { 1199// CHECK-NEXT: "qualType": "int" 1200// CHECK-NEXT: }, 1201// CHECK-NEXT: "instance": true 1202// CHECK-NEXT: }, 1203// CHECK-NEXT: { 1204// CHECK-NEXT: "id": "0x{{.*}}", 1205// CHECK-NEXT: "kind": "ObjCMethodDecl", 1206// CHECK-NEXT: "loc": { 1207// CHECK-NEXT: "offset": {{[0-9]+}}, 1208// CHECK-NEXT: "col": 52, 1209// CHECK-NEXT: "tokLen": 3 1210// CHECK-NEXT: }, 1211// CHECK-NEXT: "range": { 1212// CHECK-NEXT: "begin": { 1213// CHECK-NEXT: "offset": {{[0-9]+}}, 1214// CHECK-NEXT: "col": 52, 1215// CHECK-NEXT: "tokLen": 3 1216// CHECK-NEXT: }, 1217// CHECK-NEXT: "end": { 1218// CHECK-NEXT: "offset": {{[0-9]+}}, 1219// CHECK-NEXT: "col": 52, 1220// CHECK-NEXT: "tokLen": 3 1221// CHECK-NEXT: } 1222// CHECK-NEXT: }, 1223// CHECK-NEXT: "isImplicit": true, 1224// CHECK-NEXT: "name": "setterFoo:", 1225// CHECK-NEXT: "mangledName": "-[TestObjCProperty setterFoo:]", 1226// CHECK-NEXT: "returnType": { 1227// CHECK-NEXT: "qualType": "void" 1228// CHECK-NEXT: }, 1229// CHECK-NEXT: "instance": true, 1230// CHECK-NEXT: "inner": [ 1231// CHECK-NEXT: { 1232// CHECK-NEXT: "id": "0x{{.*}}", 1233// CHECK-NEXT: "kind": "ParmVarDecl", 1234// CHECK-NEXT: "loc": { 1235// CHECK-NEXT: "offset": {{[0-9]+}}, 1236// CHECK-NEXT: "col": 52, 1237// CHECK-NEXT: "tokLen": 3 1238// CHECK-NEXT: }, 1239// CHECK-NEXT: "range": { 1240// CHECK-NEXT: "begin": { 1241// CHECK-NEXT: "offset": {{[0-9]+}}, 1242// CHECK-NEXT: "col": 52, 1243// CHECK-NEXT: "tokLen": 3 1244// CHECK-NEXT: }, 1245// CHECK-NEXT: "end": { 1246// CHECK-NEXT: "offset": {{[0-9]+}}, 1247// CHECK-NEXT: "col": 52, 1248// CHECK-NEXT: "tokLen": 3 1249// CHECK-NEXT: } 1250// CHECK-NEXT: }, 1251// CHECK-NEXT: "name": "foo", 1252// CHECK-NEXT: "type": { 1253// CHECK-NEXT: "qualType": "int" 1254// CHECK-NEXT: } 1255// CHECK-NEXT: } 1256// CHECK-NEXT: ] 1257// CHECK-NEXT: }, 1258// CHECK-NEXT: { 1259// CHECK-NEXT: "id": "0x{{.*}}", 1260// CHECK-NEXT: "kind": "ObjCMethodDecl", 1261// CHECK-NEXT: "loc": { 1262// CHECK-NEXT: "offset": {{[0-9]+}}, 1263// CHECK-NEXT: "line": 64, 1264// CHECK-NEXT: "col": 15, 1265// CHECK-NEXT: "tokLen": 3 1266// CHECK-NEXT: }, 1267// CHECK-NEXT: "range": { 1268// CHECK-NEXT: "begin": { 1269// CHECK-NEXT: "offset": {{[0-9]+}}, 1270// CHECK-NEXT: "col": 15, 1271// CHECK-NEXT: "tokLen": 3 1272// CHECK-NEXT: }, 1273// CHECK-NEXT: "end": { 1274// CHECK-NEXT: "offset": {{[0-9]+}}, 1275// CHECK-NEXT: "col": 15, 1276// CHECK-NEXT: "tokLen": 3 1277// CHECK-NEXT: } 1278// CHECK-NEXT: }, 1279// CHECK-NEXT: "isImplicit": true, 1280// CHECK-NEXT: "name": "bar", 1281// CHECK-NEXT: "mangledName": "-[TestObjCProperty bar]", 1282// CHECK-NEXT: "returnType": { 1283// CHECK-NEXT: "qualType": "int" 1284// CHECK-NEXT: }, 1285// CHECK-NEXT: "instance": true 1286// CHECK-NEXT: }, 1287// CHECK-NEXT: { 1288// CHECK-NEXT: "id": "0x{{.*}}", 1289// CHECK-NEXT: "kind": "ObjCMethodDecl", 1290// CHECK-NEXT: "loc": { 1291// CHECK-NEXT: "offset": {{[0-9]+}}, 1292// CHECK-NEXT: "col": 15, 1293// CHECK-NEXT: "tokLen": 3 1294// CHECK-NEXT: }, 1295// CHECK-NEXT: "range": { 1296// CHECK-NEXT: "begin": { 1297// CHECK-NEXT: "offset": {{[0-9]+}}, 1298// CHECK-NEXT: "col": 15, 1299// CHECK-NEXT: "tokLen": 3 1300// CHECK-NEXT: }, 1301// CHECK-NEXT: "end": { 1302// CHECK-NEXT: "offset": {{[0-9]+}}, 1303// CHECK-NEXT: "col": 15, 1304// CHECK-NEXT: "tokLen": 3 1305// CHECK-NEXT: } 1306// CHECK-NEXT: }, 1307// CHECK-NEXT: "isImplicit": true, 1308// CHECK-NEXT: "name": "setBar:", 1309// CHECK-NEXT: "mangledName": "-[TestObjCProperty setBar:]", 1310// CHECK-NEXT: "returnType": { 1311// CHECK-NEXT: "qualType": "void" 1312// CHECK-NEXT: }, 1313// CHECK-NEXT: "instance": true, 1314// CHECK-NEXT: "inner": [ 1315// CHECK-NEXT: { 1316// CHECK-NEXT: "id": "0x{{.*}}", 1317// CHECK-NEXT: "kind": "ParmVarDecl", 1318// CHECK-NEXT: "loc": { 1319// CHECK-NEXT: "offset": {{[0-9]+}}, 1320// CHECK-NEXT: "col": 15, 1321// CHECK-NEXT: "tokLen": 3 1322// CHECK-NEXT: }, 1323// CHECK-NEXT: "range": { 1324// CHECK-NEXT: "begin": { 1325// CHECK-NEXT: "offset": {{[0-9]+}}, 1326// CHECK-NEXT: "col": 15, 1327// CHECK-NEXT: "tokLen": 3 1328// CHECK-NEXT: }, 1329// CHECK-NEXT: "end": { 1330// CHECK-NEXT: "offset": {{[0-9]+}}, 1331// CHECK-NEXT: "col": 15, 1332// CHECK-NEXT: "tokLen": 3 1333// CHECK-NEXT: } 1334// CHECK-NEXT: }, 1335// CHECK-NEXT: "name": "bar", 1336// CHECK-NEXT: "type": { 1337// CHECK-NEXT: "qualType": "int" 1338// CHECK-NEXT: } 1339// CHECK-NEXT: } 1340// CHECK-NEXT: ] 1341// CHECK-NEXT: } 1342// CHECK-NEXT: ] 1343// CHECK-NEXT: } 1344 1345 1346// CHECK-NOT: {{^}}Dumping 1347// CHECK: "kind": "ObjCImplementationDecl", 1348// CHECK-NEXT: "loc": { 1349// CHECK-NEXT: "offset": {{[0-9]+}}, 1350// CHECK-NEXT: "file": "{{.*}}", 1351// CHECK-NEXT: "line": 67, 1352// CHECK-NEXT: "col": 17, 1353// CHECK-NEXT: "tokLen": 16 1354// CHECK-NEXT: }, 1355// CHECK-NEXT: "range": { 1356// CHECK-NEXT: "begin": { 1357// CHECK-NEXT: "offset": {{[0-9]+}}, 1358// CHECK-NEXT: "col": 1, 1359// CHECK-NEXT: "tokLen": 1 1360// CHECK-NEXT: }, 1361// CHECK-NEXT: "end": { 1362// CHECK-NEXT: "offset": {{[0-9]+}}, 1363// CHECK-NEXT: "line": 72, 1364// CHECK-NEXT: "col": 1, 1365// CHECK-NEXT: "tokLen": 1 1366// CHECK-NEXT: } 1367// CHECK-NEXT: }, 1368// CHECK-NEXT: "name": "TestObjCProperty", 1369// CHECK-NEXT: "super": { 1370// CHECK-NEXT: "id": "0x0" 1371// CHECK-NEXT: }, 1372// CHECK-NEXT: "interface": { 1373// CHECK-NEXT: "id": "0x{{.*}}", 1374// CHECK-NEXT: "kind": "ObjCInterfaceDecl", 1375// CHECK-NEXT: "name": "TestObjCProperty" 1376// CHECK-NEXT: }, 1377// CHECK-NEXT: "inner": [ 1378// CHECK-NEXT: { 1379// CHECK-NEXT: "id": "0x{{.*}}", 1380// CHECK-NEXT: "kind": "ObjCIvarDecl", 1381// CHECK-NEXT: "loc": { 1382// CHECK-NEXT: "offset": {{[0-9]+}}, 1383// CHECK-NEXT: "line": 68, 1384// CHECK-NEXT: "col": 7, 1385// CHECK-NEXT: "tokLen": 1 1386// CHECK-NEXT: }, 1387// CHECK-NEXT: "range": { 1388// CHECK-NEXT: "begin": { 1389// CHECK-NEXT: "offset": {{[0-9]+}}, 1390// CHECK-NEXT: "col": 3, 1391// CHECK-NEXT: "tokLen": 3 1392// CHECK-NEXT: }, 1393// CHECK-NEXT: "end": { 1394// CHECK-NEXT: "offset": {{[0-9]+}}, 1395// CHECK-NEXT: "col": 7, 1396// CHECK-NEXT: "tokLen": 1 1397// CHECK-NEXT: } 1398// CHECK-NEXT: }, 1399// CHECK-NEXT: "name": "i", 1400// CHECK-NEXT: "type": { 1401// CHECK-NEXT: "qualType": "int" 1402// CHECK-NEXT: }, 1403// CHECK-NEXT: "access": "private" 1404// CHECK-NEXT: }, 1405// CHECK-NEXT: { 1406// CHECK-NEXT: "id": "0x{{.*}}", 1407// CHECK-NEXT: "kind": "ObjCPropertyImplDecl", 1408// CHECK-NEXT: "loc": { 1409// CHECK-NEXT: "offset": {{[0-9]+}}, 1410// CHECK-NEXT: "line": 70, 1411// CHECK-NEXT: "col": 13, 1412// CHECK-NEXT: "tokLen": 3 1413// CHECK-NEXT: }, 1414// CHECK-NEXT: "range": { 1415// CHECK-NEXT: "begin": { 1416// CHECK-NEXT: "offset": {{[0-9]+}}, 1417// CHECK-NEXT: "col": 1, 1418// CHECK-NEXT: "tokLen": 1 1419// CHECK-NEXT: }, 1420// CHECK-NEXT: "end": { 1421// CHECK-NEXT: "offset": {{[0-9]+}}, 1422// CHECK-NEXT: "col": 17, 1423// CHECK-NEXT: "tokLen": 1 1424// CHECK-NEXT: } 1425// CHECK-NEXT: }, 1426// CHECK-NEXT: "name": "foo", 1427// CHECK-NEXT: "implKind": "synthesize", 1428// CHECK-NEXT: "propertyDecl": { 1429// CHECK-NEXT: "id": "0x{{.*}}", 1430// CHECK-NEXT: "kind": "ObjCPropertyDecl", 1431// CHECK-NEXT: "name": "foo" 1432// CHECK-NEXT: }, 1433// CHECK-NEXT: "ivarDecl": { 1434// CHECK-NEXT: "id": "0x{{.*}}", 1435// CHECK-NEXT: "kind": "ObjCIvarDecl", 1436// CHECK-NEXT: "name": "i", 1437// CHECK-NEXT: "type": { 1438// CHECK-NEXT: "qualType": "int" 1439// CHECK-NEXT: } 1440// CHECK-NEXT: } 1441// CHECK-NEXT: }, 1442// CHECK-NEXT: { 1443// CHECK-NEXT: "id": "0x{{.*}}", 1444// CHECK-NEXT: "kind": "ObjCIvarDecl", 1445// CHECK-NEXT: "loc": { 1446// CHECK-NEXT: "offset": {{[0-9]+}}, 1447// CHECK-NEXT: "line": 71, 1448// CHECK-NEXT: "col": 13, 1449// CHECK-NEXT: "tokLen": 3 1450// CHECK-NEXT: }, 1451// CHECK-NEXT: "range": { 1452// CHECK-NEXT: "begin": { 1453// CHECK-NEXT: "offset": {{[0-9]+}}, 1454// CHECK-NEXT: "col": 13, 1455// CHECK-NEXT: "tokLen": 3 1456// CHECK-NEXT: }, 1457// CHECK-NEXT: "end": { 1458// CHECK-NEXT: "offset": {{[0-9]+}}, 1459// CHECK-NEXT: "col": 13, 1460// CHECK-NEXT: "tokLen": 3 1461// CHECK-NEXT: } 1462// CHECK-NEXT: }, 1463// CHECK-NEXT: "name": "bar", 1464// CHECK-NEXT: "type": { 1465// CHECK-NEXT: "qualType": "int" 1466// CHECK-NEXT: }, 1467// CHECK-NEXT: "synthesized": true, 1468// CHECK-NEXT: "access": "private" 1469// CHECK-NEXT: }, 1470// CHECK-NEXT: { 1471// CHECK-NEXT: "id": "0x{{.*}}", 1472// CHECK-NEXT: "kind": "ObjCPropertyImplDecl", 1473// CHECK-NEXT: "loc": { 1474// CHECK-NEXT: "offset": {{[0-9]+}}, 1475// CHECK-NEXT: "col": 13, 1476// CHECK-NEXT: "tokLen": 3 1477// CHECK-NEXT: }, 1478// CHECK-NEXT: "range": { 1479// CHECK-NEXT: "begin": { 1480// CHECK-NEXT: "offset": {{[0-9]+}}, 1481// CHECK-NEXT: "col": 1, 1482// CHECK-NEXT: "tokLen": 1 1483// CHECK-NEXT: }, 1484// CHECK-NEXT: "end": { 1485// CHECK-NEXT: "offset": {{[0-9]+}}, 1486// CHECK-NEXT: "col": 13, 1487// CHECK-NEXT: "tokLen": 3 1488// CHECK-NEXT: } 1489// CHECK-NEXT: }, 1490// CHECK-NEXT: "name": "bar", 1491// CHECK-NEXT: "implKind": "synthesize", 1492// CHECK-NEXT: "propertyDecl": { 1493// CHECK-NEXT: "id": "0x{{.*}}", 1494// CHECK-NEXT: "kind": "ObjCPropertyDecl", 1495// CHECK-NEXT: "name": "bar" 1496// CHECK-NEXT: }, 1497// CHECK-NEXT: "ivarDecl": { 1498// CHECK-NEXT: "id": "0x{{.*}}", 1499// CHECK-NEXT: "kind": "ObjCIvarDecl", 1500// CHECK-NEXT: "name": "bar", 1501// CHECK-NEXT: "type": { 1502// CHECK-NEXT: "qualType": "int" 1503// CHECK-NEXT: } 1504// CHECK-NEXT: } 1505// CHECK-NEXT: }, 1506// CHECK-NEXT: { 1507// CHECK-NEXT: "id": "0x{{.*}}", 1508// CHECK-NEXT: "kind": "ObjCMethodDecl", 1509// CHECK-NEXT: "loc": { 1510// CHECK-NEXT: "offset": {{[0-9]+}}, 1511// CHECK-NEXT: "line": 70, 1512// CHECK-NEXT: "col": 1, 1513// CHECK-NEXT: "tokLen": 1 1514// CHECK-NEXT: }, 1515// CHECK-NEXT: "range": { 1516// CHECK-NEXT: "begin": { 1517// CHECK-NEXT: "offset": {{[0-9]+}}, 1518// CHECK-NEXT: "col": 1, 1519// CHECK-NEXT: "tokLen": 1 1520// CHECK-NEXT: }, 1521// CHECK-NEXT: "end": { 1522// CHECK-NEXT: "offset": {{[0-9]+}}, 1523// CHECK-NEXT: "col": 13, 1524// CHECK-NEXT: "tokLen": 3 1525// CHECK-NEXT: } 1526// CHECK-NEXT: }, 1527// CHECK-NEXT: "isImplicit": true, 1528// CHECK-NEXT: "name": "getterFoo", 1529// CHECK-NEXT: "mangledName": "-[TestObjCProperty getterFoo]", 1530// CHECK-NEXT: "returnType": { 1531// CHECK-NEXT: "qualType": "int" 1532// CHECK-NEXT: }, 1533// CHECK-NEXT: "instance": true 1534// CHECK-NEXT: }, 1535// CHECK-NEXT: { 1536// CHECK-NEXT: "id": "0x{{.*}}", 1537// CHECK-NEXT: "kind": "ObjCMethodDecl", 1538// CHECK-NEXT: "loc": { 1539// CHECK-NEXT: "offset": {{[0-9]+}}, 1540// CHECK-NEXT: "col": 1, 1541// CHECK-NEXT: "tokLen": 1 1542// CHECK-NEXT: }, 1543// CHECK-NEXT: "range": { 1544// CHECK-NEXT: "begin": { 1545// CHECK-NEXT: "offset": {{[0-9]+}}, 1546// CHECK-NEXT: "col": 1, 1547// CHECK-NEXT: "tokLen": 1 1548// CHECK-NEXT: }, 1549// CHECK-NEXT: "end": { 1550// CHECK-NEXT: "offset": {{[0-9]+}}, 1551// CHECK-NEXT: "col": 13, 1552// CHECK-NEXT: "tokLen": 3 1553// CHECK-NEXT: } 1554// CHECK-NEXT: }, 1555// CHECK-NEXT: "isImplicit": true, 1556// CHECK-NEXT: "name": "setterFoo:", 1557// CHECK-NEXT: "mangledName": "-[TestObjCProperty setterFoo:]", 1558// CHECK-NEXT: "returnType": { 1559// CHECK-NEXT: "qualType": "void" 1560// CHECK-NEXT: }, 1561// CHECK-NEXT: "instance": true, 1562// CHECK-NEXT: "inner": [ 1563// CHECK-NEXT: { 1564// CHECK-NEXT: "id": "0x{{.*}}", 1565// CHECK-NEXT: "kind": "ParmVarDecl", 1566// CHECK-NEXT: "loc": { 1567// CHECK-NEXT: "offset": {{[0-9]+}}, 1568// CHECK-NEXT: "line": 63, 1569// CHECK-NEXT: "col": 52, 1570// CHECK-NEXT: "tokLen": 3 1571// CHECK-NEXT: }, 1572// CHECK-NEXT: "range": { 1573// CHECK-NEXT: "begin": { 1574// CHECK-NEXT: "offset": {{[0-9]+}}, 1575// CHECK-NEXT: "col": 52, 1576// CHECK-NEXT: "tokLen": 3 1577// CHECK-NEXT: }, 1578// CHECK-NEXT: "end": { 1579// CHECK-NEXT: "offset": {{[0-9]+}}, 1580// CHECK-NEXT: "col": 52, 1581// CHECK-NEXT: "tokLen": 3 1582// CHECK-NEXT: } 1583// CHECK-NEXT: }, 1584// CHECK-NEXT: "name": "foo", 1585// CHECK-NEXT: "type": { 1586// CHECK-NEXT: "qualType": "int" 1587// CHECK-NEXT: } 1588// CHECK-NEXT: } 1589// CHECK-NEXT: ] 1590// CHECK-NEXT: }, 1591// CHECK-NEXT: { 1592// CHECK-NEXT: "id": "0x{{.*}}", 1593// CHECK-NEXT: "kind": "ObjCMethodDecl", 1594// CHECK-NEXT: "loc": { 1595// CHECK-NEXT: "offset": {{[0-9]+}}, 1596// CHECK-NEXT: "line": 71, 1597// CHECK-NEXT: "col": 1, 1598// CHECK-NEXT: "tokLen": 1 1599// CHECK-NEXT: }, 1600// CHECK-NEXT: "range": { 1601// CHECK-NEXT: "begin": { 1602// CHECK-NEXT: "offset": {{[0-9]+}}, 1603// CHECK-NEXT: "col": 1, 1604// CHECK-NEXT: "tokLen": 1 1605// CHECK-NEXT: }, 1606// CHECK-NEXT: "end": { 1607// CHECK-NEXT: "offset": {{[0-9]+}}, 1608// CHECK-NEXT: "col": 13, 1609// CHECK-NEXT: "tokLen": 3 1610// CHECK-NEXT: } 1611// CHECK-NEXT: }, 1612// CHECK-NEXT: "isImplicit": true, 1613// CHECK-NEXT: "name": "bar", 1614// CHECK-NEXT: "mangledName": "-[TestObjCProperty bar]", 1615// CHECK-NEXT: "returnType": { 1616// CHECK-NEXT: "qualType": "int" 1617// CHECK-NEXT: }, 1618// CHECK-NEXT: "instance": true 1619// CHECK-NEXT: }, 1620// CHECK-NEXT: { 1621// CHECK-NEXT: "id": "0x{{.*}}", 1622// CHECK-NEXT: "kind": "ObjCMethodDecl", 1623// CHECK-NEXT: "loc": { 1624// CHECK-NEXT: "offset": {{[0-9]+}}, 1625// CHECK-NEXT: "col": 1, 1626// CHECK-NEXT: "tokLen": 1 1627// CHECK-NEXT: }, 1628// CHECK-NEXT: "range": { 1629// CHECK-NEXT: "begin": { 1630// CHECK-NEXT: "offset": {{[0-9]+}}, 1631// CHECK-NEXT: "col": 1, 1632// CHECK-NEXT: "tokLen": 1 1633// CHECK-NEXT: }, 1634// CHECK-NEXT: "end": { 1635// CHECK-NEXT: "offset": {{[0-9]+}}, 1636// CHECK-NEXT: "col": 13, 1637// CHECK-NEXT: "tokLen": 3 1638// CHECK-NEXT: } 1639// CHECK-NEXT: }, 1640// CHECK-NEXT: "isImplicit": true, 1641// CHECK-NEXT: "name": "setBar:", 1642// CHECK-NEXT: "mangledName": "-[TestObjCProperty setBar:]", 1643// CHECK-NEXT: "returnType": { 1644// CHECK-NEXT: "qualType": "void" 1645// CHECK-NEXT: }, 1646// CHECK-NEXT: "instance": true, 1647// CHECK-NEXT: "inner": [ 1648// CHECK-NEXT: { 1649// CHECK-NEXT: "id": "0x{{.*}}", 1650// CHECK-NEXT: "kind": "ParmVarDecl", 1651// CHECK-NEXT: "loc": { 1652// CHECK-NEXT: "offset": {{[0-9]+}}, 1653// CHECK-NEXT: "line": 64, 1654// CHECK-NEXT: "col": 15, 1655// CHECK-NEXT: "tokLen": 3 1656// CHECK-NEXT: }, 1657// CHECK-NEXT: "range": { 1658// CHECK-NEXT: "begin": { 1659// CHECK-NEXT: "offset": {{[0-9]+}}, 1660// CHECK-NEXT: "col": 15, 1661// CHECK-NEXT: "tokLen": 3 1662// CHECK-NEXT: }, 1663// CHECK-NEXT: "end": { 1664// CHECK-NEXT: "offset": {{[0-9]+}}, 1665// CHECK-NEXT: "col": 15, 1666// CHECK-NEXT: "tokLen": 3 1667// CHECK-NEXT: } 1668// CHECK-NEXT: }, 1669// CHECK-NEXT: "name": "bar", 1670// CHECK-NEXT: "type": { 1671// CHECK-NEXT: "qualType": "int" 1672// CHECK-NEXT: } 1673// CHECK-NEXT: } 1674// CHECK-NEXT: ] 1675// CHECK-NEXT: } 1676// CHECK-NEXT: ] 1677// CHECK-NEXT: } 1678 1679 1680// CHECK-NOT: {{^}}Dumping 1681// CHECK: "kind": "FunctionDecl", 1682// CHECK-NEXT: "loc": { 1683// CHECK-NEXT: "offset": {{[0-9]+}}, 1684// CHECK-NEXT: "file": "{{.*}}", 1685// CHECK-NEXT: "line": 74, 1686// CHECK-NEXT: "col": 6, 1687// CHECK-NEXT: "tokLen": 13 1688// CHECK-NEXT: }, 1689// CHECK-NEXT: "range": { 1690// CHECK-NEXT: "begin": { 1691// CHECK-NEXT: "offset": {{[0-9]+}}, 1692// CHECK-NEXT: "col": 1, 1693// CHECK-NEXT: "tokLen": 4 1694// CHECK-NEXT: }, 1695// CHECK-NEXT: "end": { 1696// CHECK-NEXT: "offset": {{[0-9]+}}, 1697// CHECK-NEXT: "line": 76, 1698// CHECK-NEXT: "col": 1, 1699// CHECK-NEXT: "tokLen": 1 1700// CHECK-NEXT: } 1701// CHECK-NEXT: }, 1702// CHECK-NEXT: "name": "TestBlockDecl", 1703// CHECK-NEXT: "mangledName": "_TestBlockDecl", 1704// CHECK-NEXT: "type": { 1705// CHECK-NEXT: "qualType": "void (int)" 1706// CHECK-NEXT: }, 1707// CHECK-NEXT: "inner": [ 1708// CHECK-NEXT: { 1709// CHECK-NEXT: "id": "0x{{.*}}", 1710// CHECK-NEXT: "kind": "ParmVarDecl", 1711// CHECK-NEXT: "loc": { 1712// CHECK-NEXT: "offset": {{[0-9]+}}, 1713// CHECK-NEXT: "line": 74, 1714// CHECK-NEXT: "col": 24, 1715// CHECK-NEXT: "tokLen": 1 1716// CHECK-NEXT: }, 1717// CHECK-NEXT: "range": { 1718// CHECK-NEXT: "begin": { 1719// CHECK-NEXT: "offset": {{[0-9]+}}, 1720// CHECK-NEXT: "col": 20, 1721// CHECK-NEXT: "tokLen": 3 1722// CHECK-NEXT: }, 1723// CHECK-NEXT: "end": { 1724// CHECK-NEXT: "offset": {{[0-9]+}}, 1725// CHECK-NEXT: "col": 24, 1726// CHECK-NEXT: "tokLen": 1 1727// CHECK-NEXT: } 1728// CHECK-NEXT: }, 1729// CHECK-NEXT: "isUsed": true, 1730// CHECK-NEXT: "name": "x", 1731// CHECK-NEXT: "type": { 1732// CHECK-NEXT: "qualType": "int" 1733// CHECK-NEXT: } 1734// CHECK-NEXT: }, 1735// CHECK-NEXT: { 1736// CHECK-NEXT: "id": "0x{{.*}}", 1737// CHECK-NEXT: "kind": "CompoundStmt", 1738// CHECK-NEXT: "range": { 1739// CHECK-NEXT: "begin": { 1740// CHECK-NEXT: "offset": {{[0-9]+}}, 1741// CHECK-NEXT: "col": 27, 1742// CHECK-NEXT: "tokLen": 1 1743// CHECK-NEXT: }, 1744// CHECK-NEXT: "end": { 1745// CHECK-NEXT: "offset": {{[0-9]+}}, 1746// CHECK-NEXT: "line": 76, 1747// CHECK-NEXT: "col": 1, 1748// CHECK-NEXT: "tokLen": 1 1749// CHECK-NEXT: } 1750// CHECK-NEXT: }, 1751// CHECK-NEXT: "inner": [ 1752// CHECK-NEXT: { 1753// CHECK-NEXT: "id": "0x{{.*}}", 1754// CHECK-NEXT: "kind": "ExprWithCleanups", 1755// CHECK-NEXT: "range": { 1756// CHECK-NEXT: "begin": { 1757// CHECK-NEXT: "offset": {{[0-9]+}}, 1758// CHECK-NEXT: "line": 75, 1759// CHECK-NEXT: "col": 3, 1760// CHECK-NEXT: "tokLen": 1 1761// CHECK-NEXT: }, 1762// CHECK-NEXT: "end": { 1763// CHECK-NEXT: "offset": {{[0-9]+}}, 1764// CHECK-NEXT: "col": 21, 1765// CHECK-NEXT: "tokLen": 1 1766// CHECK-NEXT: } 1767// CHECK-NEXT: }, 1768// CHECK-NEXT: "type": { 1769// CHECK-NEXT: "qualType": "void (^)(int, ...)" 1770// CHECK-NEXT: }, 1771// CHECK-NEXT: "valueCategory": "prvalue", 1772// CHECK-NEXT: "cleanupsHaveSideEffects": true, 1773// CHECK-NEXT: "cleanups": [ 1774// CHECK-NEXT: { 1775// CHECK-NEXT: "id": "0x{{.*}}", 1776// CHECK-NEXT: "kind": "BlockDecl" 1777// CHECK-NEXT: } 1778// CHECK-NEXT: ], 1779// CHECK-NEXT: "inner": [ 1780// CHECK-NEXT: { 1781// CHECK-NEXT: "id": "0x{{.*}}", 1782// CHECK-NEXT: "kind": "BlockExpr", 1783// CHECK-NEXT: "range": { 1784// CHECK-NEXT: "begin": { 1785// CHECK-NEXT: "offset": {{[0-9]+}}, 1786// CHECK-NEXT: "col": 3, 1787// CHECK-NEXT: "tokLen": 1 1788// CHECK-NEXT: }, 1789// CHECK-NEXT: "end": { 1790// CHECK-NEXT: "offset": {{[0-9]+}}, 1791// CHECK-NEXT: "col": 21, 1792// CHECK-NEXT: "tokLen": 1 1793// CHECK-NEXT: } 1794// CHECK-NEXT: }, 1795// CHECK-NEXT: "type": { 1796// CHECK-NEXT: "qualType": "void (^)(int, ...)" 1797// CHECK-NEXT: }, 1798// CHECK-NEXT: "valueCategory": "prvalue", 1799// CHECK-NEXT: "inner": [ 1800// CHECK-NEXT: { 1801// CHECK-NEXT: "id": "0x{{.*}}", 1802// CHECK-NEXT: "kind": "BlockDecl", 1803// CHECK-NEXT: "loc": { 1804// CHECK-NEXT: "offset": {{[0-9]+}}, 1805// CHECK-NEXT: "col": 3, 1806// CHECK-NEXT: "tokLen": 1 1807// CHECK-NEXT: }, 1808// CHECK-NEXT: "range": { 1809// CHECK-NEXT: "begin": { 1810// CHECK-NEXT: "offset": {{[0-9]+}}, 1811// CHECK-NEXT: "col": 3, 1812// CHECK-NEXT: "tokLen": 1 1813// CHECK-NEXT: }, 1814// CHECK-NEXT: "end": { 1815// CHECK-NEXT: "offset": {{[0-9]+}}, 1816// CHECK-NEXT: "col": 21, 1817// CHECK-NEXT: "tokLen": 1 1818// CHECK-NEXT: } 1819// CHECK-NEXT: }, 1820// CHECK-NEXT: "variadic": true, 1821// CHECK-NEXT: "inner": [ 1822// CHECK-NEXT: { 1823// CHECK-NEXT: "id": "0x{{.*}}", 1824// CHECK-NEXT: "kind": "ParmVarDecl", 1825// CHECK-NEXT: "loc": { 1826// CHECK-NEXT: "offset": {{[0-9]+}}, 1827// CHECK-NEXT: "col": 9, 1828// CHECK-NEXT: "tokLen": 1 1829// CHECK-NEXT: }, 1830// CHECK-NEXT: "range": { 1831// CHECK-NEXT: "begin": { 1832// CHECK-NEXT: "offset": {{[0-9]+}}, 1833// CHECK-NEXT: "col": 5, 1834// CHECK-NEXT: "tokLen": 3 1835// CHECK-NEXT: }, 1836// CHECK-NEXT: "end": { 1837// CHECK-NEXT: "offset": {{[0-9]+}}, 1838// CHECK-NEXT: "col": 9, 1839// CHECK-NEXT: "tokLen": 1 1840// CHECK-NEXT: } 1841// CHECK-NEXT: }, 1842// CHECK-NEXT: "name": "y", 1843// CHECK-NEXT: "type": { 1844// CHECK-NEXT: "qualType": "int" 1845// CHECK-NEXT: } 1846// CHECK-NEXT: }, 1847// CHECK-NEXT: { 1848// CHECK-NEXT: "kind": "Capture", 1849// CHECK-NEXT: "var": { 1850// CHECK-NEXT: "id": "0x{{.*}}", 1851// CHECK-NEXT: "kind": "ParmVarDecl", 1852// CHECK-NEXT: "name": "x", 1853// CHECK-NEXT: "type": { 1854// CHECK-NEXT: "qualType": "int" 1855// CHECK-NEXT: } 1856// CHECK-NEXT: } 1857// CHECK-NEXT: }, 1858// CHECK-NEXT: { 1859// CHECK-NEXT: "id": "0x{{.*}}", 1860// CHECK-NEXT: "kind": "CompoundStmt", 1861// CHECK-NEXT: "range": { 1862// CHECK-NEXT: "begin": { 1863// CHECK-NEXT: "offset": {{[0-9]+}}, 1864// CHECK-NEXT: "col": 16, 1865// CHECK-NEXT: "tokLen": 1 1866// CHECK-NEXT: }, 1867// CHECK-NEXT: "end": { 1868// CHECK-NEXT: "offset": {{[0-9]+}}, 1869// CHECK-NEXT: "col": 21, 1870// CHECK-NEXT: "tokLen": 1 1871// CHECK-NEXT: } 1872// CHECK-NEXT: }, 1873// CHECK-NEXT: "inner": [ 1874// CHECK-NEXT: { 1875// CHECK-NEXT: "id": "0x{{.*}}", 1876// CHECK-NEXT: "kind": "ImplicitCastExpr", 1877// CHECK-NEXT: "range": { 1878// CHECK-NEXT: "begin": { 1879// CHECK-NEXT: "offset": {{[0-9]+}}, 1880// CHECK-NEXT: "col": 18, 1881// CHECK-NEXT: "tokLen": 1 1882// CHECK-NEXT: }, 1883// CHECK-NEXT: "end": { 1884// CHECK-NEXT: "offset": {{[0-9]+}}, 1885// CHECK-NEXT: "col": 18, 1886// CHECK-NEXT: "tokLen": 1 1887// CHECK-NEXT: } 1888// CHECK-NEXT: }, 1889// CHECK-NEXT: "type": { 1890// CHECK-NEXT: "qualType": "int" 1891// CHECK-NEXT: }, 1892// CHECK-NEXT: "valueCategory": "prvalue", 1893// CHECK-NEXT: "castKind": "LValueToRValue", 1894// CHECK-NEXT: "inner": [ 1895// CHECK-NEXT: { 1896// CHECK-NEXT: "id": "0x{{.*}}", 1897// CHECK-NEXT: "kind": "DeclRefExpr", 1898// CHECK-NEXT: "range": { 1899// CHECK-NEXT: "begin": { 1900// CHECK-NEXT: "offset": {{[0-9]+}}, 1901// CHECK-NEXT: "col": 18, 1902// CHECK-NEXT: "tokLen": 1 1903// CHECK-NEXT: }, 1904// CHECK-NEXT: "end": { 1905// CHECK-NEXT: "offset": {{[0-9]+}}, 1906// CHECK-NEXT: "col": 18, 1907// CHECK-NEXT: "tokLen": 1 1908// CHECK-NEXT: } 1909// CHECK-NEXT: }, 1910// CHECK-NEXT: "type": { 1911// CHECK-NEXT: "qualType": "const int" 1912// CHECK-NEXT: }, 1913// CHECK-NEXT: "valueCategory": "lvalue", 1914// CHECK-NEXT: "referencedDecl": { 1915// CHECK-NEXT: "id": "0x{{.*}}", 1916// CHECK-NEXT: "kind": "ParmVarDecl", 1917// CHECK-NEXT: "name": "x", 1918// CHECK-NEXT: "type": { 1919// CHECK-NEXT: "qualType": "int" 1920// CHECK-NEXT: } 1921// CHECK-NEXT: } 1922// CHECK-NEXT: } 1923// CHECK-NEXT: ] 1924// CHECK-NEXT: } 1925// CHECK-NEXT: ] 1926// CHECK-NEXT: } 1927// CHECK-NEXT: ] 1928// CHECK-NEXT: } 1929// CHECK-NEXT: ] 1930// CHECK-NEXT: } 1931// CHECK-NEXT: ] 1932// CHECK-NEXT: } 1933// CHECK-NEXT: ] 1934// CHECK-NEXT: } 1935// CHECK-NEXT: ] 1936// CHECK-NEXT: } 1937 1938 1939// CHECK-NOT: {{^}}Dumping 1940// CHECK: "kind": "VarDecl", 1941// CHECK-NEXT: "loc": { 1942// CHECK-NEXT: "offset": {{[0-9]+}}, 1943// CHECK-NEXT: "file": "{{.*}}", 1944// CHECK-NEXT: "line": 83, 1945// CHECK-NEXT: "col": 21, 1946// CHECK-NEXT: "tokLen": 4 1947// CHECK-NEXT: }, 1948// CHECK-NEXT: "range": { 1949// CHECK-NEXT: "begin": { 1950// CHECK-NEXT: "offset": {{[0-9]+}}, 1951// CHECK-NEXT: "col": 3, 1952// CHECK-NEXT: "tokLen": 10 1953// CHECK-NEXT: }, 1954// CHECK-NEXT: "end": { 1955// CHECK-NEXT: "offset": {{[0-9]+}}, 1956// CHECK-NEXT: "col": 21, 1957// CHECK-NEXT: "tokLen": 4 1958// CHECK-NEXT: } 1959// CHECK-NEXT: }, 1960// CHECK-NEXT: "name": "Test", 1961// CHECK-NEXT: "type": { 1962// CHECK-NEXT: "desugaredQualType": "int", 1963// CHECK-NEXT: "qualType": "typeof (B.foo)" 1964// CHECK-NEXT: } 1965// CHECK-NEXT: } 1966