1*5bb5704cSZixu Wang // RUN: rm -rf %t 2*5bb5704cSZixu Wang // RUN: split-file %s %t 3*5bb5704cSZixu Wang // RUN: sed -e "s@INPUT_DIR@%/t@g" %t/reference.output.json.in >> \ 4*5bb5704cSZixu Wang // RUN: %t/reference.output.json 5*5bb5704cSZixu Wang // RUN: %clang -extract-api -target arm64-apple-macosx \ 6*5bb5704cSZixu Wang // RUN: %t/input.h -o %t/output.json | FileCheck -allow-empty %s 7*5bb5704cSZixu Wang 8*5bb5704cSZixu Wang // Generator version is not consistent across test runs, normalize it. 9*5bb5704cSZixu Wang // RUN: sed -e "s@\"generator\": \".*\"@\"generator\": \"?\"@g" \ 10*5bb5704cSZixu Wang // RUN: %t/output.json >> %t/output-normalized.json 11*5bb5704cSZixu Wang // RUN: diff %t/reference.output.json %t/output-normalized.json 12*5bb5704cSZixu Wang 13*5bb5704cSZixu Wang // CHECK-NOT: error: 14*5bb5704cSZixu Wang // CHECK-NOT: warning: 15*5bb5704cSZixu Wang 16*5bb5704cSZixu Wang //--- input.h 17*5bb5704cSZixu Wang /// Color in RGBA 18*5bb5704cSZixu Wang struct Color { 19*5bb5704cSZixu Wang unsigned Red; 20*5bb5704cSZixu Wang unsigned Green; 21*5bb5704cSZixu Wang unsigned Blue; 22*5bb5704cSZixu Wang /// Alpha channel for transparency 23*5bb5704cSZixu Wang unsigned Alpha; 24*5bb5704cSZixu Wang }; 25*5bb5704cSZixu Wang 26*5bb5704cSZixu Wang //--- reference.output.json.in 27*5bb5704cSZixu Wang { 28*5bb5704cSZixu Wang "metadata": { 29*5bb5704cSZixu Wang "formatVersion": { 30*5bb5704cSZixu Wang "major": 0, 31*5bb5704cSZixu Wang "minor": 5, 32*5bb5704cSZixu Wang "patch": 3 33*5bb5704cSZixu Wang }, 34*5bb5704cSZixu Wang "generator": "?" 35*5bb5704cSZixu Wang }, 36*5bb5704cSZixu Wang "module": { 37*5bb5704cSZixu Wang "name": "", 38*5bb5704cSZixu Wang "platform": { 39*5bb5704cSZixu Wang "architecture": "arm64", 40*5bb5704cSZixu Wang "operatingSystem": { 41*5bb5704cSZixu Wang "minimumVersion": { 42*5bb5704cSZixu Wang "major": 11, 43*5bb5704cSZixu Wang "minor": 0, 44*5bb5704cSZixu Wang "patch": 0 45*5bb5704cSZixu Wang }, 46*5bb5704cSZixu Wang "name": "macosx" 47*5bb5704cSZixu Wang }, 48*5bb5704cSZixu Wang "vendor": "apple" 49*5bb5704cSZixu Wang } 50*5bb5704cSZixu Wang }, 51*5bb5704cSZixu Wang "relationhips": [ 52*5bb5704cSZixu Wang { 53*5bb5704cSZixu Wang "kind": "memberOf", 54*5bb5704cSZixu Wang "source": "c:@S@Color@FI@Red", 55*5bb5704cSZixu Wang "target": "c:@S@Color" 56*5bb5704cSZixu Wang }, 57*5bb5704cSZixu Wang { 58*5bb5704cSZixu Wang "kind": "memberOf", 59*5bb5704cSZixu Wang "source": "c:@S@Color@FI@Green", 60*5bb5704cSZixu Wang "target": "c:@S@Color" 61*5bb5704cSZixu Wang }, 62*5bb5704cSZixu Wang { 63*5bb5704cSZixu Wang "kind": "memberOf", 64*5bb5704cSZixu Wang "source": "c:@S@Color@FI@Blue", 65*5bb5704cSZixu Wang "target": "c:@S@Color" 66*5bb5704cSZixu Wang }, 67*5bb5704cSZixu Wang { 68*5bb5704cSZixu Wang "kind": "memberOf", 69*5bb5704cSZixu Wang "source": "c:@S@Color@FI@Alpha", 70*5bb5704cSZixu Wang "target": "c:@S@Color" 71*5bb5704cSZixu Wang } 72*5bb5704cSZixu Wang ], 73*5bb5704cSZixu Wang "symbols": [ 74*5bb5704cSZixu Wang { 75*5bb5704cSZixu Wang "declarationFragments": [ 76*5bb5704cSZixu Wang { 77*5bb5704cSZixu Wang "kind": "keyword", 78*5bb5704cSZixu Wang "spelling": "struct" 79*5bb5704cSZixu Wang }, 80*5bb5704cSZixu Wang { 81*5bb5704cSZixu Wang "kind": "text", 82*5bb5704cSZixu Wang "spelling": " " 83*5bb5704cSZixu Wang }, 84*5bb5704cSZixu Wang { 85*5bb5704cSZixu Wang "kind": "identifier", 86*5bb5704cSZixu Wang "spelling": "Color" 87*5bb5704cSZixu Wang } 88*5bb5704cSZixu Wang ], 89*5bb5704cSZixu Wang "docComment": { 90*5bb5704cSZixu Wang "lines": [ 91*5bb5704cSZixu Wang { 92*5bb5704cSZixu Wang "range": { 93*5bb5704cSZixu Wang "end": { 94*5bb5704cSZixu Wang "character": 18, 95*5bb5704cSZixu Wang "line": 1 96*5bb5704cSZixu Wang }, 97*5bb5704cSZixu Wang "start": { 98*5bb5704cSZixu Wang "character": 5, 99*5bb5704cSZixu Wang "line": 1 100*5bb5704cSZixu Wang } 101*5bb5704cSZixu Wang }, 102*5bb5704cSZixu Wang "text": "Color in RGBA" 103*5bb5704cSZixu Wang } 104*5bb5704cSZixu Wang ] 105*5bb5704cSZixu Wang }, 106*5bb5704cSZixu Wang "identifier": { 107*5bb5704cSZixu Wang "interfaceLanguage": "c", 108*5bb5704cSZixu Wang "precise": "c:@S@Color" 109*5bb5704cSZixu Wang }, 110*5bb5704cSZixu Wang "kind": { 111*5bb5704cSZixu Wang "displayName": "Structure", 112*5bb5704cSZixu Wang "identifier": "c.struct" 113*5bb5704cSZixu Wang }, 114*5bb5704cSZixu Wang "location": { 115*5bb5704cSZixu Wang "character": 8, 116*5bb5704cSZixu Wang "line": 2, 117*5bb5704cSZixu Wang "uri": "file://INPUT_DIR/input.h" 118*5bb5704cSZixu Wang }, 119*5bb5704cSZixu Wang "names": { 120*5bb5704cSZixu Wang "subHeading": [ 121*5bb5704cSZixu Wang { 122*5bb5704cSZixu Wang "kind": "identifier", 123*5bb5704cSZixu Wang "spelling": "Color" 124*5bb5704cSZixu Wang } 125*5bb5704cSZixu Wang ], 126*5bb5704cSZixu Wang "title": "Color" 127*5bb5704cSZixu Wang } 128*5bb5704cSZixu Wang }, 129*5bb5704cSZixu Wang { 130*5bb5704cSZixu Wang "declarationFragments": [ 131*5bb5704cSZixu Wang { 132*5bb5704cSZixu Wang "kind": "typeIdentifier", 133*5bb5704cSZixu Wang "preciseIdentifier": "c:i", 134*5bb5704cSZixu Wang "spelling": "unsigned int" 135*5bb5704cSZixu Wang }, 136*5bb5704cSZixu Wang { 137*5bb5704cSZixu Wang "kind": "text", 138*5bb5704cSZixu Wang "spelling": " " 139*5bb5704cSZixu Wang }, 140*5bb5704cSZixu Wang { 141*5bb5704cSZixu Wang "kind": "identifier", 142*5bb5704cSZixu Wang "spelling": "Red" 143*5bb5704cSZixu Wang } 144*5bb5704cSZixu Wang ], 145*5bb5704cSZixu Wang "identifier": { 146*5bb5704cSZixu Wang "interfaceLanguage": "c", 147*5bb5704cSZixu Wang "precise": "c:@S@Color@FI@Red" 148*5bb5704cSZixu Wang }, 149*5bb5704cSZixu Wang "kind": { 150*5bb5704cSZixu Wang "displayName": "Instance Property", 151*5bb5704cSZixu Wang "identifier": "c.property" 152*5bb5704cSZixu Wang }, 153*5bb5704cSZixu Wang "location": { 154*5bb5704cSZixu Wang "character": 12, 155*5bb5704cSZixu Wang "line": 3, 156*5bb5704cSZixu Wang "uri": "file://INPUT_DIR/input.h" 157*5bb5704cSZixu Wang }, 158*5bb5704cSZixu Wang "names": { 159*5bb5704cSZixu Wang "subHeading": [ 160*5bb5704cSZixu Wang { 161*5bb5704cSZixu Wang "kind": "identifier", 162*5bb5704cSZixu Wang "spelling": "Red" 163*5bb5704cSZixu Wang } 164*5bb5704cSZixu Wang ], 165*5bb5704cSZixu Wang "title": "Red" 166*5bb5704cSZixu Wang } 167*5bb5704cSZixu Wang }, 168*5bb5704cSZixu Wang { 169*5bb5704cSZixu Wang "declarationFragments": [ 170*5bb5704cSZixu Wang { 171*5bb5704cSZixu Wang "kind": "typeIdentifier", 172*5bb5704cSZixu Wang "preciseIdentifier": "c:i", 173*5bb5704cSZixu Wang "spelling": "unsigned int" 174*5bb5704cSZixu Wang }, 175*5bb5704cSZixu Wang { 176*5bb5704cSZixu Wang "kind": "text", 177*5bb5704cSZixu Wang "spelling": " " 178*5bb5704cSZixu Wang }, 179*5bb5704cSZixu Wang { 180*5bb5704cSZixu Wang "kind": "identifier", 181*5bb5704cSZixu Wang "spelling": "Green" 182*5bb5704cSZixu Wang } 183*5bb5704cSZixu Wang ], 184*5bb5704cSZixu Wang "identifier": { 185*5bb5704cSZixu Wang "interfaceLanguage": "c", 186*5bb5704cSZixu Wang "precise": "c:@S@Color@FI@Green" 187*5bb5704cSZixu Wang }, 188*5bb5704cSZixu Wang "kind": { 189*5bb5704cSZixu Wang "displayName": "Instance Property", 190*5bb5704cSZixu Wang "identifier": "c.property" 191*5bb5704cSZixu Wang }, 192*5bb5704cSZixu Wang "location": { 193*5bb5704cSZixu Wang "character": 12, 194*5bb5704cSZixu Wang "line": 4, 195*5bb5704cSZixu Wang "uri": "file://INPUT_DIR/input.h" 196*5bb5704cSZixu Wang }, 197*5bb5704cSZixu Wang "names": { 198*5bb5704cSZixu Wang "subHeading": [ 199*5bb5704cSZixu Wang { 200*5bb5704cSZixu Wang "kind": "identifier", 201*5bb5704cSZixu Wang "spelling": "Green" 202*5bb5704cSZixu Wang } 203*5bb5704cSZixu Wang ], 204*5bb5704cSZixu Wang "title": "Green" 205*5bb5704cSZixu Wang } 206*5bb5704cSZixu Wang }, 207*5bb5704cSZixu Wang { 208*5bb5704cSZixu Wang "declarationFragments": [ 209*5bb5704cSZixu Wang { 210*5bb5704cSZixu Wang "kind": "typeIdentifier", 211*5bb5704cSZixu Wang "preciseIdentifier": "c:i", 212*5bb5704cSZixu Wang "spelling": "unsigned int" 213*5bb5704cSZixu Wang }, 214*5bb5704cSZixu Wang { 215*5bb5704cSZixu Wang "kind": "text", 216*5bb5704cSZixu Wang "spelling": " " 217*5bb5704cSZixu Wang }, 218*5bb5704cSZixu Wang { 219*5bb5704cSZixu Wang "kind": "identifier", 220*5bb5704cSZixu Wang "spelling": "Blue" 221*5bb5704cSZixu Wang } 222*5bb5704cSZixu Wang ], 223*5bb5704cSZixu Wang "identifier": { 224*5bb5704cSZixu Wang "interfaceLanguage": "c", 225*5bb5704cSZixu Wang "precise": "c:@S@Color@FI@Blue" 226*5bb5704cSZixu Wang }, 227*5bb5704cSZixu Wang "kind": { 228*5bb5704cSZixu Wang "displayName": "Instance Property", 229*5bb5704cSZixu Wang "identifier": "c.property" 230*5bb5704cSZixu Wang }, 231*5bb5704cSZixu Wang "location": { 232*5bb5704cSZixu Wang "character": 12, 233*5bb5704cSZixu Wang "line": 5, 234*5bb5704cSZixu Wang "uri": "file://INPUT_DIR/input.h" 235*5bb5704cSZixu Wang }, 236*5bb5704cSZixu Wang "names": { 237*5bb5704cSZixu Wang "subHeading": [ 238*5bb5704cSZixu Wang { 239*5bb5704cSZixu Wang "kind": "identifier", 240*5bb5704cSZixu Wang "spelling": "Blue" 241*5bb5704cSZixu Wang } 242*5bb5704cSZixu Wang ], 243*5bb5704cSZixu Wang "title": "Blue" 244*5bb5704cSZixu Wang } 245*5bb5704cSZixu Wang }, 246*5bb5704cSZixu Wang { 247*5bb5704cSZixu Wang "declarationFragments": [ 248*5bb5704cSZixu Wang { 249*5bb5704cSZixu Wang "kind": "typeIdentifier", 250*5bb5704cSZixu Wang "preciseIdentifier": "c:i", 251*5bb5704cSZixu Wang "spelling": "unsigned int" 252*5bb5704cSZixu Wang }, 253*5bb5704cSZixu Wang { 254*5bb5704cSZixu Wang "kind": "text", 255*5bb5704cSZixu Wang "spelling": " " 256*5bb5704cSZixu Wang }, 257*5bb5704cSZixu Wang { 258*5bb5704cSZixu Wang "kind": "identifier", 259*5bb5704cSZixu Wang "spelling": "Alpha" 260*5bb5704cSZixu Wang } 261*5bb5704cSZixu Wang ], 262*5bb5704cSZixu Wang "docComment": { 263*5bb5704cSZixu Wang "lines": [ 264*5bb5704cSZixu Wang { 265*5bb5704cSZixu Wang "range": { 266*5bb5704cSZixu Wang "end": { 267*5bb5704cSZixu Wang "character": 37, 268*5bb5704cSZixu Wang "line": 6 269*5bb5704cSZixu Wang }, 270*5bb5704cSZixu Wang "start": { 271*5bb5704cSZixu Wang "character": 7, 272*5bb5704cSZixu Wang "line": 6 273*5bb5704cSZixu Wang } 274*5bb5704cSZixu Wang }, 275*5bb5704cSZixu Wang "text": "Alpha channel for transparency" 276*5bb5704cSZixu Wang } 277*5bb5704cSZixu Wang ] 278*5bb5704cSZixu Wang }, 279*5bb5704cSZixu Wang "identifier": { 280*5bb5704cSZixu Wang "interfaceLanguage": "c", 281*5bb5704cSZixu Wang "precise": "c:@S@Color@FI@Alpha" 282*5bb5704cSZixu Wang }, 283*5bb5704cSZixu Wang "kind": { 284*5bb5704cSZixu Wang "displayName": "Instance Property", 285*5bb5704cSZixu Wang "identifier": "c.property" 286*5bb5704cSZixu Wang }, 287*5bb5704cSZixu Wang "location": { 288*5bb5704cSZixu Wang "character": 12, 289*5bb5704cSZixu Wang "line": 7, 290*5bb5704cSZixu Wang "uri": "file://INPUT_DIR/input.h" 291*5bb5704cSZixu Wang }, 292*5bb5704cSZixu Wang "names": { 293*5bb5704cSZixu Wang "subHeading": [ 294*5bb5704cSZixu Wang { 295*5bb5704cSZixu Wang "kind": "identifier", 296*5bb5704cSZixu Wang "spelling": "Alpha" 297*5bb5704cSZixu Wang } 298*5bb5704cSZixu Wang ], 299*5bb5704cSZixu Wang "title": "Alpha" 300*5bb5704cSZixu Wang } 301*5bb5704cSZixu Wang } 302*5bb5704cSZixu Wang ] 303*5bb5704cSZixu Wang } 304