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