15bb5704cSZixu Wang // RUN: rm -rf %t 25bb5704cSZixu Wang // RUN: split-file %s %t 35bb5704cSZixu Wang // RUN: sed -e "s@INPUT_DIR@%/t@g" %t/reference.output.json.in >> \ 45bb5704cSZixu Wang // RUN: %t/reference.output.json 55bb5704cSZixu Wang // RUN: %clang -extract-api -target arm64-apple-macosx \ 65bb5704cSZixu Wang // RUN: %t/input.h -o %t/output.json | FileCheck -allow-empty %s 75bb5704cSZixu Wang 85bb5704cSZixu Wang // Generator version is not consistent across test runs, normalize it. 95bb5704cSZixu Wang // RUN: sed -e "s@\"generator\": \".*\"@\"generator\": \"?\"@g" \ 105bb5704cSZixu Wang // RUN: %t/output.json >> %t/output-normalized.json 115bb5704cSZixu Wang // RUN: diff %t/reference.output.json %t/output-normalized.json 125bb5704cSZixu Wang 135bb5704cSZixu Wang // CHECK-NOT: error: 145bb5704cSZixu Wang // CHECK-NOT: warning: 155bb5704cSZixu Wang 165bb5704cSZixu Wang //--- input.h 175bb5704cSZixu Wang /// Color in RGBA 185bb5704cSZixu Wang struct Color { 195bb5704cSZixu Wang unsigned Red; 205bb5704cSZixu Wang unsigned Green; 215bb5704cSZixu Wang unsigned Blue; 225bb5704cSZixu Wang /// Alpha channel for transparency 235bb5704cSZixu Wang unsigned Alpha; 245bb5704cSZixu Wang }; 255bb5704cSZixu Wang 265bb5704cSZixu Wang //--- reference.output.json.in 275bb5704cSZixu Wang { 285bb5704cSZixu Wang "metadata": { 295bb5704cSZixu Wang "formatVersion": { 305bb5704cSZixu Wang "major": 0, 315bb5704cSZixu Wang "minor": 5, 325bb5704cSZixu Wang "patch": 3 335bb5704cSZixu Wang }, 345bb5704cSZixu Wang "generator": "?" 355bb5704cSZixu Wang }, 365bb5704cSZixu Wang "module": { 375bb5704cSZixu Wang "name": "", 385bb5704cSZixu Wang "platform": { 395bb5704cSZixu Wang "architecture": "arm64", 405bb5704cSZixu Wang "operatingSystem": { 415bb5704cSZixu Wang "minimumVersion": { 425bb5704cSZixu Wang "major": 11, 435bb5704cSZixu Wang "minor": 0, 445bb5704cSZixu Wang "patch": 0 455bb5704cSZixu Wang }, 465bb5704cSZixu Wang "name": "macosx" 475bb5704cSZixu Wang }, 485bb5704cSZixu Wang "vendor": "apple" 495bb5704cSZixu Wang } 505bb5704cSZixu Wang }, 51*28d79314SDaniel Grumberg "relationships": [ 525bb5704cSZixu Wang { 535bb5704cSZixu Wang "kind": "memberOf", 545bb5704cSZixu Wang "source": "c:@S@Color@FI@Red", 555bb5704cSZixu Wang "target": "c:@S@Color" 565bb5704cSZixu Wang }, 575bb5704cSZixu Wang { 585bb5704cSZixu Wang "kind": "memberOf", 595bb5704cSZixu Wang "source": "c:@S@Color@FI@Green", 605bb5704cSZixu Wang "target": "c:@S@Color" 615bb5704cSZixu Wang }, 625bb5704cSZixu Wang { 635bb5704cSZixu Wang "kind": "memberOf", 645bb5704cSZixu Wang "source": "c:@S@Color@FI@Blue", 655bb5704cSZixu Wang "target": "c:@S@Color" 665bb5704cSZixu Wang }, 675bb5704cSZixu Wang { 685bb5704cSZixu Wang "kind": "memberOf", 695bb5704cSZixu Wang "source": "c:@S@Color@FI@Alpha", 705bb5704cSZixu Wang "target": "c:@S@Color" 715bb5704cSZixu Wang } 725bb5704cSZixu Wang ], 735bb5704cSZixu Wang "symbols": [ 745bb5704cSZixu Wang { 75*28d79314SDaniel Grumberg "accessLevel": "public", 765bb5704cSZixu Wang "declarationFragments": [ 775bb5704cSZixu Wang { 785bb5704cSZixu Wang "kind": "keyword", 795bb5704cSZixu Wang "spelling": "struct" 805bb5704cSZixu Wang }, 815bb5704cSZixu Wang { 825bb5704cSZixu Wang "kind": "text", 835bb5704cSZixu Wang "spelling": " " 845bb5704cSZixu Wang }, 855bb5704cSZixu Wang { 865bb5704cSZixu Wang "kind": "identifier", 875bb5704cSZixu Wang "spelling": "Color" 885bb5704cSZixu Wang } 895bb5704cSZixu Wang ], 905bb5704cSZixu Wang "docComment": { 915bb5704cSZixu Wang "lines": [ 925bb5704cSZixu Wang { 935bb5704cSZixu Wang "range": { 945bb5704cSZixu Wang "end": { 955bb5704cSZixu Wang "character": 18, 965bb5704cSZixu Wang "line": 1 975bb5704cSZixu Wang }, 985bb5704cSZixu Wang "start": { 995bb5704cSZixu Wang "character": 5, 1005bb5704cSZixu Wang "line": 1 1015bb5704cSZixu Wang } 1025bb5704cSZixu Wang }, 1035bb5704cSZixu Wang "text": "Color in RGBA" 1045bb5704cSZixu Wang } 1055bb5704cSZixu Wang ] 1065bb5704cSZixu Wang }, 1075bb5704cSZixu Wang "identifier": { 1085bb5704cSZixu Wang "interfaceLanguage": "c", 1095bb5704cSZixu Wang "precise": "c:@S@Color" 1105bb5704cSZixu Wang }, 1115bb5704cSZixu Wang "kind": { 1125bb5704cSZixu Wang "displayName": "Structure", 1135bb5704cSZixu Wang "identifier": "c.struct" 1145bb5704cSZixu Wang }, 1155bb5704cSZixu Wang "location": { 116*28d79314SDaniel Grumberg "position": { 1175bb5704cSZixu Wang "character": 8, 118*28d79314SDaniel Grumberg "line": 2 119*28d79314SDaniel Grumberg }, 1205bb5704cSZixu Wang "uri": "file://INPUT_DIR/input.h" 1215bb5704cSZixu Wang }, 1225bb5704cSZixu Wang "names": { 1235bb5704cSZixu Wang "subHeading": [ 1245bb5704cSZixu Wang { 1255bb5704cSZixu Wang "kind": "identifier", 1265bb5704cSZixu Wang "spelling": "Color" 1275bb5704cSZixu Wang } 1285bb5704cSZixu Wang ], 1295bb5704cSZixu Wang "title": "Color" 130*28d79314SDaniel Grumberg }, 131*28d79314SDaniel Grumberg "pathComponents": [ 132*28d79314SDaniel Grumberg "Color" 133*28d79314SDaniel Grumberg ] 1345bb5704cSZixu Wang }, 1355bb5704cSZixu Wang { 136*28d79314SDaniel Grumberg "accessLevel": "public", 1375bb5704cSZixu Wang "declarationFragments": [ 1385bb5704cSZixu Wang { 1395bb5704cSZixu Wang "kind": "typeIdentifier", 1405bb5704cSZixu Wang "preciseIdentifier": "c:i", 1415bb5704cSZixu Wang "spelling": "unsigned int" 1425bb5704cSZixu Wang }, 1435bb5704cSZixu Wang { 1445bb5704cSZixu Wang "kind": "text", 1455bb5704cSZixu Wang "spelling": " " 1465bb5704cSZixu Wang }, 1475bb5704cSZixu Wang { 1485bb5704cSZixu Wang "kind": "identifier", 1495bb5704cSZixu Wang "spelling": "Red" 1505bb5704cSZixu Wang } 1515bb5704cSZixu Wang ], 1525bb5704cSZixu Wang "identifier": { 1535bb5704cSZixu Wang "interfaceLanguage": "c", 1545bb5704cSZixu Wang "precise": "c:@S@Color@FI@Red" 1555bb5704cSZixu Wang }, 1565bb5704cSZixu Wang "kind": { 1575bb5704cSZixu Wang "displayName": "Instance Property", 1585bb5704cSZixu Wang "identifier": "c.property" 1595bb5704cSZixu Wang }, 1605bb5704cSZixu Wang "location": { 161*28d79314SDaniel Grumberg "position": { 1625bb5704cSZixu Wang "character": 12, 163*28d79314SDaniel Grumberg "line": 3 164*28d79314SDaniel Grumberg }, 1655bb5704cSZixu Wang "uri": "file://INPUT_DIR/input.h" 1665bb5704cSZixu Wang }, 1675bb5704cSZixu Wang "names": { 1685bb5704cSZixu Wang "subHeading": [ 1695bb5704cSZixu Wang { 1705bb5704cSZixu Wang "kind": "identifier", 1715bb5704cSZixu Wang "spelling": "Red" 1725bb5704cSZixu Wang } 1735bb5704cSZixu Wang ], 1745bb5704cSZixu Wang "title": "Red" 175*28d79314SDaniel Grumberg }, 176*28d79314SDaniel Grumberg "pathComponents": [ 177*28d79314SDaniel Grumberg "Color", 178*28d79314SDaniel Grumberg "Red" 179*28d79314SDaniel Grumberg ] 1805bb5704cSZixu Wang }, 1815bb5704cSZixu Wang { 182*28d79314SDaniel Grumberg "accessLevel": "public", 1835bb5704cSZixu Wang "declarationFragments": [ 1845bb5704cSZixu Wang { 1855bb5704cSZixu Wang "kind": "typeIdentifier", 1865bb5704cSZixu Wang "preciseIdentifier": "c:i", 1875bb5704cSZixu Wang "spelling": "unsigned int" 1885bb5704cSZixu Wang }, 1895bb5704cSZixu Wang { 1905bb5704cSZixu Wang "kind": "text", 1915bb5704cSZixu Wang "spelling": " " 1925bb5704cSZixu Wang }, 1935bb5704cSZixu Wang { 1945bb5704cSZixu Wang "kind": "identifier", 1955bb5704cSZixu Wang "spelling": "Green" 1965bb5704cSZixu Wang } 1975bb5704cSZixu Wang ], 1985bb5704cSZixu Wang "identifier": { 1995bb5704cSZixu Wang "interfaceLanguage": "c", 2005bb5704cSZixu Wang "precise": "c:@S@Color@FI@Green" 2015bb5704cSZixu Wang }, 2025bb5704cSZixu Wang "kind": { 2035bb5704cSZixu Wang "displayName": "Instance Property", 2045bb5704cSZixu Wang "identifier": "c.property" 2055bb5704cSZixu Wang }, 2065bb5704cSZixu Wang "location": { 207*28d79314SDaniel Grumberg "position": { 2085bb5704cSZixu Wang "character": 12, 209*28d79314SDaniel Grumberg "line": 4 210*28d79314SDaniel Grumberg }, 2115bb5704cSZixu Wang "uri": "file://INPUT_DIR/input.h" 2125bb5704cSZixu Wang }, 2135bb5704cSZixu Wang "names": { 2145bb5704cSZixu Wang "subHeading": [ 2155bb5704cSZixu Wang { 2165bb5704cSZixu Wang "kind": "identifier", 2175bb5704cSZixu Wang "spelling": "Green" 2185bb5704cSZixu Wang } 2195bb5704cSZixu Wang ], 2205bb5704cSZixu Wang "title": "Green" 221*28d79314SDaniel Grumberg }, 222*28d79314SDaniel Grumberg "pathComponents": [ 223*28d79314SDaniel Grumberg "Color", 224*28d79314SDaniel Grumberg "Green" 225*28d79314SDaniel Grumberg ] 2265bb5704cSZixu Wang }, 2275bb5704cSZixu Wang { 228*28d79314SDaniel Grumberg "accessLevel": "public", 2295bb5704cSZixu Wang "declarationFragments": [ 2305bb5704cSZixu Wang { 2315bb5704cSZixu Wang "kind": "typeIdentifier", 2325bb5704cSZixu Wang "preciseIdentifier": "c:i", 2335bb5704cSZixu Wang "spelling": "unsigned int" 2345bb5704cSZixu Wang }, 2355bb5704cSZixu Wang { 2365bb5704cSZixu Wang "kind": "text", 2375bb5704cSZixu Wang "spelling": " " 2385bb5704cSZixu Wang }, 2395bb5704cSZixu Wang { 2405bb5704cSZixu Wang "kind": "identifier", 2415bb5704cSZixu Wang "spelling": "Blue" 2425bb5704cSZixu Wang } 2435bb5704cSZixu Wang ], 2445bb5704cSZixu Wang "identifier": { 2455bb5704cSZixu Wang "interfaceLanguage": "c", 2465bb5704cSZixu Wang "precise": "c:@S@Color@FI@Blue" 2475bb5704cSZixu Wang }, 2485bb5704cSZixu Wang "kind": { 2495bb5704cSZixu Wang "displayName": "Instance Property", 2505bb5704cSZixu Wang "identifier": "c.property" 2515bb5704cSZixu Wang }, 2525bb5704cSZixu Wang "location": { 253*28d79314SDaniel Grumberg "position": { 2545bb5704cSZixu Wang "character": 12, 255*28d79314SDaniel Grumberg "line": 5 256*28d79314SDaniel Grumberg }, 2575bb5704cSZixu Wang "uri": "file://INPUT_DIR/input.h" 2585bb5704cSZixu Wang }, 2595bb5704cSZixu Wang "names": { 2605bb5704cSZixu Wang "subHeading": [ 2615bb5704cSZixu Wang { 2625bb5704cSZixu Wang "kind": "identifier", 2635bb5704cSZixu Wang "spelling": "Blue" 2645bb5704cSZixu Wang } 2655bb5704cSZixu Wang ], 2665bb5704cSZixu Wang "title": "Blue" 267*28d79314SDaniel Grumberg }, 268*28d79314SDaniel Grumberg "pathComponents": [ 269*28d79314SDaniel Grumberg "Color", 270*28d79314SDaniel Grumberg "Blue" 271*28d79314SDaniel Grumberg ] 2725bb5704cSZixu Wang }, 2735bb5704cSZixu Wang { 274*28d79314SDaniel Grumberg "accessLevel": "public", 2755bb5704cSZixu Wang "declarationFragments": [ 2765bb5704cSZixu Wang { 2775bb5704cSZixu Wang "kind": "typeIdentifier", 2785bb5704cSZixu Wang "preciseIdentifier": "c:i", 2795bb5704cSZixu Wang "spelling": "unsigned int" 2805bb5704cSZixu Wang }, 2815bb5704cSZixu Wang { 2825bb5704cSZixu Wang "kind": "text", 2835bb5704cSZixu Wang "spelling": " " 2845bb5704cSZixu Wang }, 2855bb5704cSZixu Wang { 2865bb5704cSZixu Wang "kind": "identifier", 2875bb5704cSZixu Wang "spelling": "Alpha" 2885bb5704cSZixu Wang } 2895bb5704cSZixu Wang ], 2905bb5704cSZixu Wang "docComment": { 2915bb5704cSZixu Wang "lines": [ 2925bb5704cSZixu Wang { 2935bb5704cSZixu Wang "range": { 2945bb5704cSZixu Wang "end": { 2955bb5704cSZixu Wang "character": 37, 2965bb5704cSZixu Wang "line": 6 2975bb5704cSZixu Wang }, 2985bb5704cSZixu Wang "start": { 2995bb5704cSZixu Wang "character": 7, 3005bb5704cSZixu Wang "line": 6 3015bb5704cSZixu Wang } 3025bb5704cSZixu Wang }, 3035bb5704cSZixu Wang "text": "Alpha channel for transparency" 3045bb5704cSZixu Wang } 3055bb5704cSZixu Wang ] 3065bb5704cSZixu Wang }, 3075bb5704cSZixu Wang "identifier": { 3085bb5704cSZixu Wang "interfaceLanguage": "c", 3095bb5704cSZixu Wang "precise": "c:@S@Color@FI@Alpha" 3105bb5704cSZixu Wang }, 3115bb5704cSZixu Wang "kind": { 3125bb5704cSZixu Wang "displayName": "Instance Property", 3135bb5704cSZixu Wang "identifier": "c.property" 3145bb5704cSZixu Wang }, 3155bb5704cSZixu Wang "location": { 316*28d79314SDaniel Grumberg "position": { 3175bb5704cSZixu Wang "character": 12, 318*28d79314SDaniel Grumberg "line": 7 319*28d79314SDaniel Grumberg }, 3205bb5704cSZixu Wang "uri": "file://INPUT_DIR/input.h" 3215bb5704cSZixu Wang }, 3225bb5704cSZixu Wang "names": { 3235bb5704cSZixu Wang "subHeading": [ 3245bb5704cSZixu Wang { 3255bb5704cSZixu Wang "kind": "identifier", 3265bb5704cSZixu Wang "spelling": "Alpha" 3275bb5704cSZixu Wang } 3285bb5704cSZixu Wang ], 3295bb5704cSZixu Wang "title": "Alpha" 330*28d79314SDaniel Grumberg }, 331*28d79314SDaniel Grumberg "pathComponents": [ 332*28d79314SDaniel Grumberg "Color", 333*28d79314SDaniel Grumberg "Alpha" 334*28d79314SDaniel Grumberg ] 3355bb5704cSZixu Wang } 3365bb5704cSZixu Wang ] 3375bb5704cSZixu Wang } 338