19b36e126SZixu Wang// RUN: rm -rf %t 2*e05c1b46SDaniel Grumberg// RUN: %clang_cc1 -extract-api --pretty-sgf --emit-sgf-symbol-labels-for-testing \ 3*e05c1b46SDaniel Grumberg// RUN: -x objective-c-header -triple arm64-apple-macosx %s -o %t/output.symbols.json -verify 49b36e126SZixu Wang 5*e05c1b46SDaniel Grumberg@protocol Protocol 6*e05c1b46SDaniel Grumberg@end 79b36e126SZixu Wang 8*e05c1b46SDaniel Grumberg// RUN: FileCheck %s --input-file %t/output.symbols.json --check-prefix SUPER 99b36e126SZixu Wang@interface Super <Protocol> 10*e05c1b46SDaniel Grumberg// SUPER: "!testRelLabel": "conformsTo $ c:objc(cs)Super $ c:objc(pl)Protocol" 11*e05c1b46SDaniel Grumberg// SUPER-LABEL: "!testLabel": "c:objc(cs)Super" 12*e05c1b46SDaniel Grumberg// SUPER: "accessLevel": "public", 13*e05c1b46SDaniel Grumberg// SUPER: "declarationFragments": [ 14*e05c1b46SDaniel Grumberg// SUPER-NEXT: { 15*e05c1b46SDaniel Grumberg// SUPER-NEXT: "kind": "keyword", 16*e05c1b46SDaniel Grumberg// SUPER-NEXT: "spelling": "@interface" 17*e05c1b46SDaniel Grumberg// SUPER-NEXT: }, 18*e05c1b46SDaniel Grumberg// SUPER-NEXT: { 19*e05c1b46SDaniel Grumberg// SUPER-NEXT: "kind": "text", 20*e05c1b46SDaniel Grumberg// SUPER-NEXT: "spelling": " " 21*e05c1b46SDaniel Grumberg// SUPER-NEXT: }, 22*e05c1b46SDaniel Grumberg// SUPER-NEXT: { 23*e05c1b46SDaniel Grumberg// SUPER-NEXT: "kind": "identifier", 24*e05c1b46SDaniel Grumberg// SUPER-NEXT: "spelling": "Super" 25*e05c1b46SDaniel Grumberg// SUPER-NEXT: } 26*e05c1b46SDaniel Grumberg// SUPER-NEXT: ], 27*e05c1b46SDaniel Grumberg// SUPER: "kind": { 28*e05c1b46SDaniel Grumberg// SUPER-NEXT: "displayName": "Class", 29*e05c1b46SDaniel Grumberg// SUPER-NEXT: "identifier": "objective-c.class" 30*e05c1b46SDaniel Grumberg// SUPER-NEXT: }, 31*e05c1b46SDaniel Grumberg// SUPER: "title": "Super" 32*e05c1b46SDaniel Grumberg// SUPER: "pathComponents": [ 33*e05c1b46SDaniel Grumberg// SUPER-NEXT: "Super" 34*e05c1b46SDaniel Grumberg// SUPER-NEXT: ] 35*e05c1b46SDaniel Grumberg 36*e05c1b46SDaniel Grumberg// RUN: FileCheck %s --input-file %t/output.symbols.json --check-prefix PROP 379b36e126SZixu Wang@property(readonly, getter=getProperty) unsigned Property; 38*e05c1b46SDaniel Grumberg// PROP: "!testRelLabel": "memberOf $ c:objc(cs)Super(py)Property $ c:objc(cs)Super" 39*e05c1b46SDaniel Grumberg// PROP: "!testLabel": "c:objc(cs)Super(py)Property" 40*e05c1b46SDaniel Grumberg// PROP: "accessLevel": "public", 41*e05c1b46SDaniel Grumberg// PROP: "declarationFragments": [ 42*e05c1b46SDaniel Grumberg// PROP-NEXT: { 43*e05c1b46SDaniel Grumberg// PROP-NEXT: "kind": "keyword", 44*e05c1b46SDaniel Grumberg// PROP-NEXT: "spelling": "@property" 45*e05c1b46SDaniel Grumberg// PROP-NEXT: }, 46*e05c1b46SDaniel Grumberg// PROP-NEXT: { 47*e05c1b46SDaniel Grumberg// PROP-NEXT: "kind": "text", 48*e05c1b46SDaniel Grumberg// PROP-NEXT: "spelling": " (" 49*e05c1b46SDaniel Grumberg// PROP-NEXT: }, 50*e05c1b46SDaniel Grumberg// PROP-NEXT: { 51*e05c1b46SDaniel Grumberg// PROP-NEXT: "kind": "keyword", 52*e05c1b46SDaniel Grumberg// PROP-NEXT: "spelling": "readonly" 53*e05c1b46SDaniel Grumberg// PROP-NEXT: }, 54*e05c1b46SDaniel Grumberg// PROP-NEXT: { 55*e05c1b46SDaniel Grumberg// PROP-NEXT: "kind": "text", 56*e05c1b46SDaniel Grumberg// PROP-NEXT: "spelling": ", " 57*e05c1b46SDaniel Grumberg// PROP-NEXT: }, 58*e05c1b46SDaniel Grumberg// PROP-NEXT: { 59*e05c1b46SDaniel Grumberg// PROP-NEXT: "kind": "keyword", 60*e05c1b46SDaniel Grumberg// PROP-NEXT: "spelling": "getter" 61*e05c1b46SDaniel Grumberg// PROP-NEXT: }, 62*e05c1b46SDaniel Grumberg// PROP-NEXT: { 63*e05c1b46SDaniel Grumberg// PROP-NEXT: "kind": "text", 64*e05c1b46SDaniel Grumberg// PROP-NEXT: "spelling": "=" 65*e05c1b46SDaniel Grumberg// PROP-NEXT: }, 66*e05c1b46SDaniel Grumberg// PROP-NEXT: { 67*e05c1b46SDaniel Grumberg// PROP-NEXT: "kind": "identifier", 68*e05c1b46SDaniel Grumberg// PROP-NEXT: "spelling": "getProperty" 69*e05c1b46SDaniel Grumberg// PROP-NEXT: }, 70*e05c1b46SDaniel Grumberg// PROP-NEXT: { 71*e05c1b46SDaniel Grumberg// PROP-NEXT: "kind": "text", 72*e05c1b46SDaniel Grumberg// PROP-NEXT: "spelling": ") " 73*e05c1b46SDaniel Grumberg// PROP-NEXT: }, 74*e05c1b46SDaniel Grumberg// PROP-NEXT: { 75*e05c1b46SDaniel Grumberg// PROP-NEXT: "kind": "typeIdentifier", 76*e05c1b46SDaniel Grumberg// PROP-NEXT: "preciseIdentifier": "c:i", 77*e05c1b46SDaniel Grumberg// PROP-NEXT: "spelling": "unsigned int" 78*e05c1b46SDaniel Grumberg// PROP-NEXT: }, 79*e05c1b46SDaniel Grumberg// PROP-NEXT: { 80*e05c1b46SDaniel Grumberg// PROP-NEXT: "kind": "text", 81*e05c1b46SDaniel Grumberg// PROP-NEXT: "spelling": " " 82*e05c1b46SDaniel Grumberg// PROP-NEXT: }, 83*e05c1b46SDaniel Grumberg// PROP-NEXT: { 84*e05c1b46SDaniel Grumberg// PROP-NEXT: "kind": "identifier", 85*e05c1b46SDaniel Grumberg// PROP-NEXT: "spelling": "Property" 86*e05c1b46SDaniel Grumberg// PROP-NEXT: }, 87*e05c1b46SDaniel Grumberg// PROP-NEXT: { 88*e05c1b46SDaniel Grumberg// PROP-NEXT: "kind": "text", 89*e05c1b46SDaniel Grumberg// PROP-NEXT: "spelling": ";" 90*e05c1b46SDaniel Grumberg// PROP-NEXT: } 91*e05c1b46SDaniel Grumberg// PROP-NEXT: ], 92*e05c1b46SDaniel Grumberg// PROP: "kind": { 93*e05c1b46SDaniel Grumberg// PROP-NEXT: "displayName": "Instance Property", 94*e05c1b46SDaniel Grumberg// PROP-NEXT: "identifier": "objective-c.property" 95*e05c1b46SDaniel Grumberg// PROP-NEXT: }, 96*e05c1b46SDaniel Grumberg// PROP: "title": "Property" 97*e05c1b46SDaniel Grumberg// PROP: "pathComponents": [ 98*e05c1b46SDaniel Grumberg// PROP-NEXT: "Super", 99*e05c1b46SDaniel Grumberg// PROP-NEXT: "Property" 100*e05c1b46SDaniel Grumberg// PROP-NEXT: ] 101*e05c1b46SDaniel Grumberg 102*e05c1b46SDaniel Grumberg// RUN: FileCheck %s --input-file %t/output.symbols.json --check-prefix GET 1039b36e126SZixu Wang+ (id)getWithProperty:(unsigned) Property; 104*e05c1b46SDaniel Grumberg// GET: "!testRelLabel": "memberOf $ c:objc(cs)Super(cm)getWithProperty: $ c:objc(cs)Super" 105*e05c1b46SDaniel Grumberg// GET-LABEL: "!testLabel": "c:objc(cs)Super(cm)getWithProperty:" 106*e05c1b46SDaniel Grumberg// GET: "accessLevel": "public", 107*e05c1b46SDaniel Grumberg// GET: "declarationFragments": [ 108*e05c1b46SDaniel Grumberg// GET-NEXT: { 109*e05c1b46SDaniel Grumberg// GET-NEXT: "kind": "text", 110*e05c1b46SDaniel Grumberg// GET-NEXT: "spelling": "+ (" 111*e05c1b46SDaniel Grumberg// GET-NEXT: }, 112*e05c1b46SDaniel Grumberg// GET-NEXT: { 113*e05c1b46SDaniel Grumberg// GET-NEXT: "kind": "keyword", 114*e05c1b46SDaniel Grumberg// GET-NEXT: "spelling": "id" 115*e05c1b46SDaniel Grumberg// GET-NEXT: }, 116*e05c1b46SDaniel Grumberg// GET-NEXT: { 117*e05c1b46SDaniel Grumberg// GET-NEXT: "kind": "text", 118*e05c1b46SDaniel Grumberg// GET-NEXT: "spelling": ") " 119*e05c1b46SDaniel Grumberg// GET-NEXT: }, 120*e05c1b46SDaniel Grumberg// GET-NEXT: { 121*e05c1b46SDaniel Grumberg// GET-NEXT: "kind": "identifier", 122*e05c1b46SDaniel Grumberg// GET-NEXT: "spelling": "getWithProperty:" 123*e05c1b46SDaniel Grumberg// GET-NEXT: }, 124*e05c1b46SDaniel Grumberg// GET-NEXT: { 125*e05c1b46SDaniel Grumberg// GET-NEXT: "kind": "text", 126*e05c1b46SDaniel Grumberg// GET-NEXT: "spelling": "(" 127*e05c1b46SDaniel Grumberg// GET-NEXT: }, 128*e05c1b46SDaniel Grumberg// GET-NEXT: { 129*e05c1b46SDaniel Grumberg// GET-NEXT: "kind": "typeIdentifier", 130*e05c1b46SDaniel Grumberg// GET-NEXT: "preciseIdentifier": "c:i", 131*e05c1b46SDaniel Grumberg// GET-NEXT: "spelling": "unsigned int" 132*e05c1b46SDaniel Grumberg// GET-NEXT: }, 133*e05c1b46SDaniel Grumberg// GET-NEXT: { 134*e05c1b46SDaniel Grumberg// GET-NEXT: "kind": "text", 135*e05c1b46SDaniel Grumberg// GET-NEXT: "spelling": ") " 136*e05c1b46SDaniel Grumberg// GET-NEXT: }, 137*e05c1b46SDaniel Grumberg// GET-NEXT: { 138*e05c1b46SDaniel Grumberg// GET-NEXT: "kind": "internalParam", 139*e05c1b46SDaniel Grumberg// GET-NEXT: "spelling": "Property" 140*e05c1b46SDaniel Grumberg// GET-NEXT: }, 141*e05c1b46SDaniel Grumberg// GET-NEXT: { 142*e05c1b46SDaniel Grumberg// GET-NEXT: "kind": "text", 143*e05c1b46SDaniel Grumberg// GET-NEXT: "spelling": ";" 144*e05c1b46SDaniel Grumberg// GET-NEXT: } 145*e05c1b46SDaniel Grumberg// GET-NEXT: ], 146*e05c1b46SDaniel Grumberg// GET: "functionSignature": { 147*e05c1b46SDaniel Grumberg// GET-NEXT: "parameters": [ 148*e05c1b46SDaniel Grumberg// GET-NEXT: { 149*e05c1b46SDaniel Grumberg// GET-NEXT: "declarationFragments": [ 150*e05c1b46SDaniel Grumberg// GET-NEXT: { 151*e05c1b46SDaniel Grumberg// GET-NEXT: "kind": "text", 152*e05c1b46SDaniel Grumberg// GET-NEXT: "spelling": "(" 153*e05c1b46SDaniel Grumberg// GET-NEXT: }, 154*e05c1b46SDaniel Grumberg// GET-NEXT: { 155*e05c1b46SDaniel Grumberg// GET-NEXT: "kind": "typeIdentifier", 156*e05c1b46SDaniel Grumberg// GET-NEXT: "preciseIdentifier": "c:i", 157*e05c1b46SDaniel Grumberg// GET-NEXT: "spelling": "unsigned int" 158*e05c1b46SDaniel Grumberg// GET-NEXT: }, 159*e05c1b46SDaniel Grumberg// GET-NEXT: { 160*e05c1b46SDaniel Grumberg// GET-NEXT: "kind": "text", 161*e05c1b46SDaniel Grumberg// GET-NEXT: "spelling": ") " 162*e05c1b46SDaniel Grumberg// GET-NEXT: }, 163*e05c1b46SDaniel Grumberg// GET-NEXT: { 164*e05c1b46SDaniel Grumberg// GET-NEXT: "kind": "internalParam", 165*e05c1b46SDaniel Grumberg// GET-NEXT: "spelling": "Property" 166*e05c1b46SDaniel Grumberg// GET-NEXT: } 167*e05c1b46SDaniel Grumberg// GET-NEXT: ], 168*e05c1b46SDaniel Grumberg// GET-NEXT: "name": "Property" 169*e05c1b46SDaniel Grumberg// GET-NEXT: } 170*e05c1b46SDaniel Grumberg// GET-NEXT: ], 171*e05c1b46SDaniel Grumberg// GET-NEXT: "returns": [ 172*e05c1b46SDaniel Grumberg// GET-NEXT: { 173*e05c1b46SDaniel Grumberg// GET-NEXT: "kind": "keyword", 174*e05c1b46SDaniel Grumberg// GET-NEXT: "spelling": "id" 175*e05c1b46SDaniel Grumberg// GET-NEXT: } 176*e05c1b46SDaniel Grumberg// GET-NEXT: ] 177*e05c1b46SDaniel Grumberg// GET-NEXT: }, 178*e05c1b46SDaniel Grumberg// GET: "kind": { 179*e05c1b46SDaniel Grumberg// GET-NEXT: "displayName": "Type Method", 180*e05c1b46SDaniel Grumberg// GET-NEXT: "identifier": "objective-c.type.method" 181*e05c1b46SDaniel Grumberg// GET-NEXT: }, 182*e05c1b46SDaniel Grumberg// GET: "title": "getWithProperty:" 183*e05c1b46SDaniel Grumberg// GET: "pathComponents": [ 184*e05c1b46SDaniel Grumberg// GET-NEXT: "Super", 185*e05c1b46SDaniel Grumberg// GET-NEXT: "getWithProperty:" 186*e05c1b46SDaniel Grumberg// GET-NEXT: ] 187*e05c1b46SDaniel Grumberg 188*e05c1b46SDaniel Grumberg// RUN: FileCheck %s --input-file %t/output.symbols.json --check-prefix SET 18980ae3665SDaniel Grumberg- (void)setProperty:(unsigned) Property andOtherThing: (unsigned) Thing; 190*e05c1b46SDaniel Grumberg// SET: "!testRelLabel": "memberOf $ c:objc(cs)Super(im)setProperty:andOtherThing: $ c:objc(cs)Super" 191*e05c1b46SDaniel Grumberg// SET-LABEL: "!testLabel": "c:objc(cs)Super(im)setProperty:andOtherThing:" 192*e05c1b46SDaniel Grumberg// SET: "accessLevel": "public", 193*e05c1b46SDaniel Grumberg// SET: "declarationFragments": [ 194*e05c1b46SDaniel Grumberg// SET-NEXT: { 195*e05c1b46SDaniel Grumberg// SET-NEXT: "kind": "text", 196*e05c1b46SDaniel Grumberg// SET-NEXT: "spelling": "- (" 197*e05c1b46SDaniel Grumberg// SET-NEXT: }, 198*e05c1b46SDaniel Grumberg// SET-NEXT: { 199*e05c1b46SDaniel Grumberg// SET-NEXT: "kind": "typeIdentifier", 200*e05c1b46SDaniel Grumberg// SET-NEXT: "preciseIdentifier": "c:v", 201*e05c1b46SDaniel Grumberg// SET-NEXT: "spelling": "void" 202*e05c1b46SDaniel Grumberg// SET-NEXT: }, 203*e05c1b46SDaniel Grumberg// SET-NEXT: { 204*e05c1b46SDaniel Grumberg// SET-NEXT: "kind": "text", 205*e05c1b46SDaniel Grumberg// SET-NEXT: "spelling": ") " 206*e05c1b46SDaniel Grumberg// SET-NEXT: }, 207*e05c1b46SDaniel Grumberg// SET-NEXT: { 208*e05c1b46SDaniel Grumberg// SET-NEXT: "kind": "identifier", 209*e05c1b46SDaniel Grumberg// SET-NEXT: "spelling": "setProperty:" 210*e05c1b46SDaniel Grumberg// SET-NEXT: }, 211*e05c1b46SDaniel Grumberg// SET-NEXT: { 212*e05c1b46SDaniel Grumberg// SET-NEXT: "kind": "text", 213*e05c1b46SDaniel Grumberg// SET-NEXT: "spelling": "(" 214*e05c1b46SDaniel Grumberg// SET-NEXT: }, 215*e05c1b46SDaniel Grumberg// SET-NEXT: { 216*e05c1b46SDaniel Grumberg// SET-NEXT: "kind": "typeIdentifier", 217*e05c1b46SDaniel Grumberg// SET-NEXT: "preciseIdentifier": "c:i", 218*e05c1b46SDaniel Grumberg// SET-NEXT: "spelling": "unsigned int" 219*e05c1b46SDaniel Grumberg// SET-NEXT: }, 220*e05c1b46SDaniel Grumberg// SET-NEXT: { 221*e05c1b46SDaniel Grumberg// SET-NEXT: "kind": "text", 222*e05c1b46SDaniel Grumberg// SET-NEXT: "spelling": ") " 223*e05c1b46SDaniel Grumberg// SET-NEXT: }, 224*e05c1b46SDaniel Grumberg// SET-NEXT: { 225*e05c1b46SDaniel Grumberg// SET-NEXT: "kind": "internalParam", 226*e05c1b46SDaniel Grumberg// SET-NEXT: "spelling": "Property" 227*e05c1b46SDaniel Grumberg// SET-NEXT: }, 228*e05c1b46SDaniel Grumberg// SET-NEXT: { 229*e05c1b46SDaniel Grumberg// SET-NEXT: "kind": "text", 230*e05c1b46SDaniel Grumberg// SET-NEXT: "spelling": " " 231*e05c1b46SDaniel Grumberg// SET-NEXT: }, 232*e05c1b46SDaniel Grumberg// SET-NEXT: { 233*e05c1b46SDaniel Grumberg// SET-NEXT: "kind": "identifier", 234*e05c1b46SDaniel Grumberg// SET-NEXT: "spelling": "andOtherThing:" 235*e05c1b46SDaniel Grumberg// SET-NEXT: }, 236*e05c1b46SDaniel Grumberg// SET-NEXT: { 237*e05c1b46SDaniel Grumberg// SET-NEXT: "kind": "text", 238*e05c1b46SDaniel Grumberg// SET-NEXT: "spelling": "(" 239*e05c1b46SDaniel Grumberg// SET-NEXT: }, 240*e05c1b46SDaniel Grumberg// SET-NEXT: { 241*e05c1b46SDaniel Grumberg// SET-NEXT: "kind": "typeIdentifier", 242*e05c1b46SDaniel Grumberg// SET-NEXT: "preciseIdentifier": "c:i", 243*e05c1b46SDaniel Grumberg// SET-NEXT: "spelling": "unsigned int" 244*e05c1b46SDaniel Grumberg// SET-NEXT: }, 245*e05c1b46SDaniel Grumberg// SET-NEXT: { 246*e05c1b46SDaniel Grumberg// SET-NEXT: "kind": "text", 247*e05c1b46SDaniel Grumberg// SET-NEXT: "spelling": ") " 248*e05c1b46SDaniel Grumberg// SET-NEXT: }, 249*e05c1b46SDaniel Grumberg// SET-NEXT: { 250*e05c1b46SDaniel Grumberg// SET-NEXT: "kind": "internalParam", 251*e05c1b46SDaniel Grumberg// SET-NEXT: "spelling": "Thing" 252*e05c1b46SDaniel Grumberg// SET-NEXT: }, 253*e05c1b46SDaniel Grumberg// SET-NEXT: { 254*e05c1b46SDaniel Grumberg// SET-NEXT: "kind": "text", 255*e05c1b46SDaniel Grumberg// SET-NEXT: "spelling": ";" 256*e05c1b46SDaniel Grumberg// SET-NEXT: } 257*e05c1b46SDaniel Grumberg// SET-NEXT: ], 258*e05c1b46SDaniel Grumberg// SET: "functionSignature": { 259*e05c1b46SDaniel Grumberg// SET-NEXT: "parameters": [ 260*e05c1b46SDaniel Grumberg// SET-NEXT: { 261*e05c1b46SDaniel Grumberg// SET-NEXT: "declarationFragments": [ 262*e05c1b46SDaniel Grumberg// SET-NEXT: { 263*e05c1b46SDaniel Grumberg// SET-NEXT: "kind": "text", 264*e05c1b46SDaniel Grumberg// SET-NEXT: "spelling": "(" 265*e05c1b46SDaniel Grumberg// SET-NEXT: }, 266*e05c1b46SDaniel Grumberg// SET-NEXT: { 267*e05c1b46SDaniel Grumberg// SET-NEXT: "kind": "typeIdentifier", 268*e05c1b46SDaniel Grumberg// SET-NEXT: "preciseIdentifier": "c:i", 269*e05c1b46SDaniel Grumberg// SET-NEXT: "spelling": "unsigned int" 270*e05c1b46SDaniel Grumberg// SET-NEXT: }, 271*e05c1b46SDaniel Grumberg// SET-NEXT: { 272*e05c1b46SDaniel Grumberg// SET-NEXT: "kind": "text", 273*e05c1b46SDaniel Grumberg// SET-NEXT: "spelling": ") " 274*e05c1b46SDaniel Grumberg// SET-NEXT: }, 275*e05c1b46SDaniel Grumberg// SET-NEXT: { 276*e05c1b46SDaniel Grumberg// SET-NEXT: "kind": "internalParam", 277*e05c1b46SDaniel Grumberg// SET-NEXT: "spelling": "Property" 278*e05c1b46SDaniel Grumberg// SET-NEXT: } 279*e05c1b46SDaniel Grumberg// SET-NEXT: ], 280*e05c1b46SDaniel Grumberg// SET-NEXT: "name": "Property" 281*e05c1b46SDaniel Grumberg// SET-NEXT: }, 282*e05c1b46SDaniel Grumberg// SET-NEXT: { 283*e05c1b46SDaniel Grumberg// SET-NEXT: "declarationFragments": [ 284*e05c1b46SDaniel Grumberg// SET-NEXT: { 285*e05c1b46SDaniel Grumberg// SET-NEXT: "kind": "text", 286*e05c1b46SDaniel Grumberg// SET-NEXT: "spelling": "(" 287*e05c1b46SDaniel Grumberg// SET-NEXT: }, 288*e05c1b46SDaniel Grumberg// SET-NEXT: { 289*e05c1b46SDaniel Grumberg// SET-NEXT: "kind": "typeIdentifier", 290*e05c1b46SDaniel Grumberg// SET-NEXT: "preciseIdentifier": "c:i", 291*e05c1b46SDaniel Grumberg// SET-NEXT: "spelling": "unsigned int" 292*e05c1b46SDaniel Grumberg// SET-NEXT: }, 293*e05c1b46SDaniel Grumberg// SET-NEXT: { 294*e05c1b46SDaniel Grumberg// SET-NEXT: "kind": "text", 295*e05c1b46SDaniel Grumberg// SET-NEXT: "spelling": ") " 296*e05c1b46SDaniel Grumberg// SET-NEXT: }, 297*e05c1b46SDaniel Grumberg// SET-NEXT: { 298*e05c1b46SDaniel Grumberg// SET-NEXT: "kind": "internalParam", 299*e05c1b46SDaniel Grumberg// SET-NEXT: "spelling": "Thing" 300*e05c1b46SDaniel Grumberg// SET-NEXT: } 301*e05c1b46SDaniel Grumberg// SET-NEXT: ], 302*e05c1b46SDaniel Grumberg// SET-NEXT: "name": "Thing" 303*e05c1b46SDaniel Grumberg// SET-NEXT: } 304*e05c1b46SDaniel Grumberg// SET-NEXT: ], 305*e05c1b46SDaniel Grumberg// SET-NEXT: "returns": [ 306*e05c1b46SDaniel Grumberg// SET-NEXT: { 307*e05c1b46SDaniel Grumberg// SET-NEXT: "kind": "typeIdentifier", 308*e05c1b46SDaniel Grumberg// SET-NEXT: "preciseIdentifier": "c:v", 309*e05c1b46SDaniel Grumberg// SET-NEXT: "spelling": "void" 310*e05c1b46SDaniel Grumberg// SET-NEXT: } 311*e05c1b46SDaniel Grumberg// SET-NEXT: ] 312*e05c1b46SDaniel Grumberg// SET-NEXT: }, 313*e05c1b46SDaniel Grumberg// SET: "kind": { 314*e05c1b46SDaniel Grumberg// SET-NEXT: "displayName": "Instance Method", 315*e05c1b46SDaniel Grumberg// SET-NEXT: "identifier": "objective-c.method" 316*e05c1b46SDaniel Grumberg// SET-NEXT: }, 317*e05c1b46SDaniel Grumberg// SET: "title": "setProperty:andOtherThing:" 3189b36e126SZixu Wang@end 3199b36e126SZixu Wang 320*e05c1b46SDaniel Grumberg// RUN: FileCheck %s --input-file %t/output.symbols.json --check-prefix DERIVED 3219b36e126SZixu Wang@interface Derived : Super { 322*e05c1b46SDaniel Grumberg// DERIVED: "!testRelLabel": "inheritsFrom $ c:objc(cs)Derived $ c:objc(cs)Super" 323*e05c1b46SDaniel Grumberg 324*e05c1b46SDaniel Grumberg// RUN: FileCheck %s --input-file %t/output.symbols.json --check-prefix IVAR 3259b36e126SZixu Wang char Ivar; 326*e05c1b46SDaniel Grumberg// IVAR: "!testRelLabel": "memberOf $ c:objc(cs)Derived@Ivar $ c:objc(cs)Derived" 327*e05c1b46SDaniel Grumberg// IVAR-LABEL: "!testLabel": "c:objc(cs)Derived@Ivar" 328*e05c1b46SDaniel Grumberg// IVAR: "accessLevel": "public", 329*e05c1b46SDaniel Grumberg// IVAR: "declarationFragments": [ 330*e05c1b46SDaniel Grumberg// IVAR-NEXT: { 331*e05c1b46SDaniel Grumberg// IVAR-NEXT: "kind": "typeIdentifier", 332*e05c1b46SDaniel Grumberg// IVAR-NEXT: "preciseIdentifier": "c:C", 333*e05c1b46SDaniel Grumberg// IVAR-NEXT: "spelling": "char" 334*e05c1b46SDaniel Grumberg// IVAR-NEXT: }, 335*e05c1b46SDaniel Grumberg// IVAR-NEXT: { 336*e05c1b46SDaniel Grumberg// IVAR-NEXT: "kind": "text", 337*e05c1b46SDaniel Grumberg// IVAR-NEXT: "spelling": " " 338*e05c1b46SDaniel Grumberg// IVAR-NEXT: }, 339*e05c1b46SDaniel Grumberg// IVAR-NEXT: { 340*e05c1b46SDaniel Grumberg// IVAR-NEXT: "kind": "identifier", 341*e05c1b46SDaniel Grumberg// IVAR-NEXT: "spelling": "Ivar" 342*e05c1b46SDaniel Grumberg// IVAR-NEXT: }, 343*e05c1b46SDaniel Grumberg// IVAR-NEXT: { 344*e05c1b46SDaniel Grumberg// IVAR-NEXT: "kind": "text", 345*e05c1b46SDaniel Grumberg// IVAR-NEXT: "spelling": ";" 346*e05c1b46SDaniel Grumberg// IVAR-NEXT: } 347*e05c1b46SDaniel Grumberg// IVAR-NEXT: ], 348*e05c1b46SDaniel Grumberg// IVAR: "kind": { 349*e05c1b46SDaniel Grumberg// IVAR-NEXT: "displayName": "Instance Variable", 350*e05c1b46SDaniel Grumberg// IVAR-NEXT: "identifier": "objective-c.ivar" 351*e05c1b46SDaniel Grumberg// IVAR-NEXT: }, 352*e05c1b46SDaniel Grumberg// IVAR: "title": "Ivar" 353*e05c1b46SDaniel Grumberg// IVAR: "pathComponents": [ 354*e05c1b46SDaniel Grumberg// IVAR-NEXT: "Derived", 355*e05c1b46SDaniel Grumberg// IVAR-NEXT: "Ivar" 356*e05c1b46SDaniel Grumberg// IVAR-NEXT: ] 3579b36e126SZixu Wang} 3589b36e126SZixu Wang@end 3599b36e126SZixu Wang 360*e05c1b46SDaniel Grumberg// expected-no-diagnostics 361