398 lines · c
1// RUN: rm -rf %t2// RUN: split-file %s %t3// RUN: sed -e "s@INPUT_DIR@%{/t:regex_replacement}@g" \4// RUN: %t/reference.output.json.in >> %t/reference.output.json5// RUN: %clang -extract-api --pretty-sgf --product-name=GlobalRecord -target arm64-apple-macosx \6// RUN: %t/input.h -o %t/output.json | FileCheck -allow-empty %s7 8// Generator version is not consistent across test runs, normalize it.9// RUN: sed -e "s@\"generator\": \".*\"@\"generator\": \"?\"@g" \10// RUN: %t/output.json >> %t/output-normalized.json11// RUN: diff %t/reference.output.json %t/output-normalized.json12 13// CHECK-NOT: error:14// CHECK-NOT: warning:15 16//--- input.h17int num;18 19/**20 * \brief Add two numbers.21 * \param [in] x A number.22 * \param [in] y Another number.23 * \param [out] res The result of x + y.24 */25void add(const int x, const int y, int *res);26 27char unavailable __attribute__((unavailable));28 29//--- reference.output.json.in30{31 "metadata": {32 "formatVersion": {33 "major": 0,34 "minor": 5,35 "patch": 336 },37 "generator": "?"38 },39 "module": {40 "name": "GlobalRecord",41 "platform": {42 "architecture": "arm64",43 "operatingSystem": {44 "minimumVersion": {45 "major": 11,46 "minor": 0,47 "patch": 048 },49 "name": "macosx"50 },51 "vendor": "apple"52 }53 },54 "relationships": [],55 "symbols": [56 {57 "accessLevel": "public",58 "declarationFragments": [59 {60 "kind": "typeIdentifier",61 "preciseIdentifier": "c:I",62 "spelling": "int"63 },64 {65 "kind": "text",66 "spelling": " "67 },68 {69 "kind": "identifier",70 "spelling": "num"71 },72 {73 "kind": "text",74 "spelling": ";"75 }76 ],77 "identifier": {78 "interfaceLanguage": "c",79 "precise": "c:@num"80 },81 "kind": {82 "displayName": "Global Variable",83 "identifier": "c.var"84 },85 "location": {86 "position": {87 "character": 4,88 "line": 089 },90 "uri": "file://INPUT_DIR/input.h"91 },92 "names": {93 "navigator": [94 {95 "kind": "identifier",96 "spelling": "num"97 }98 ],99 "subHeading": [100 {101 "kind": "identifier",102 "spelling": "num"103 }104 ],105 "title": "num"106 },107 "pathComponents": [108 "num"109 ]110 },111 {112 "accessLevel": "public",113 "declarationFragments": [114 {115 "kind": "typeIdentifier",116 "preciseIdentifier": "c:v",117 "spelling": "void"118 },119 {120 "kind": "text",121 "spelling": " "122 },123 {124 "kind": "identifier",125 "spelling": "add"126 },127 {128 "kind": "text",129 "spelling": "("130 },131 {132 "kind": "keyword",133 "spelling": "const"134 },135 {136 "kind": "text",137 "spelling": " "138 },139 {140 "kind": "typeIdentifier",141 "preciseIdentifier": "c:I",142 "spelling": "int"143 },144 {145 "kind": "text",146 "spelling": " "147 },148 {149 "kind": "internalParam",150 "spelling": "x"151 },152 {153 "kind": "text",154 "spelling": ", "155 },156 {157 "kind": "keyword",158 "spelling": "const"159 },160 {161 "kind": "text",162 "spelling": " "163 },164 {165 "kind": "typeIdentifier",166 "preciseIdentifier": "c:I",167 "spelling": "int"168 },169 {170 "kind": "text",171 "spelling": " "172 },173 {174 "kind": "internalParam",175 "spelling": "y"176 },177 {178 "kind": "text",179 "spelling": ", "180 },181 {182 "kind": "typeIdentifier",183 "preciseIdentifier": "c:I",184 "spelling": "int"185 },186 {187 "kind": "text",188 "spelling": " *"189 },190 {191 "kind": "internalParam",192 "spelling": "res"193 },194 {195 "kind": "text",196 "spelling": ");"197 }198 ],199 "docComment": {200 "lines": [201 {202 "range": {203 "end": {204 "character": 3,205 "line": 2206 },207 "start": {208 "character": 3,209 "line": 2210 }211 },212 "text": ""213 },214 {215 "range": {216 "end": {217 "character": 26,218 "line": 3219 },220 "start": {221 "character": 2,222 "line": 3223 }224 },225 "text": " \\brief Add two numbers."226 },227 {228 "range": {229 "end": {230 "character": 29,231 "line": 4232 },233 "start": {234 "character": 2,235 "line": 4236 }237 },238 "text": " \\param [in] x A number."239 },240 {241 "range": {242 "end": {243 "character": 35,244 "line": 5245 },246 "start": {247 "character": 2,248 "line": 5249 }250 },251 "text": " \\param [in] y Another number."252 },253 {254 "range": {255 "end": {256 "character": 40,257 "line": 6258 },259 "start": {260 "character": 2,261 "line": 6262 }263 },264 "text": " \\param [out] res The result of x + y."265 },266 {267 "range": {268 "end": {269 "character": 3,270 "line": 7271 },272 "start": {273 "character": 0,274 "line": 7275 }276 },277 "text": " "278 }279 ]280 },281 "functionSignature": {282 "parameters": [283 {284 "declarationFragments": [285 {286 "kind": "keyword",287 "spelling": "const"288 },289 {290 "kind": "text",291 "spelling": " "292 },293 {294 "kind": "typeIdentifier",295 "preciseIdentifier": "c:I",296 "spelling": "int"297 },298 {299 "kind": "text",300 "spelling": " "301 },302 {303 "kind": "internalParam",304 "spelling": "x"305 }306 ],307 "name": "x"308 },309 {310 "declarationFragments": [311 {312 "kind": "keyword",313 "spelling": "const"314 },315 {316 "kind": "text",317 "spelling": " "318 },319 {320 "kind": "typeIdentifier",321 "preciseIdentifier": "c:I",322 "spelling": "int"323 },324 {325 "kind": "text",326 "spelling": " "327 },328 {329 "kind": "internalParam",330 "spelling": "y"331 }332 ],333 "name": "y"334 },335 {336 "declarationFragments": [337 {338 "kind": "typeIdentifier",339 "preciseIdentifier": "c:I",340 "spelling": "int"341 },342 {343 "kind": "text",344 "spelling": " *"345 },346 {347 "kind": "internalParam",348 "spelling": "res"349 }350 ],351 "name": "res"352 }353 ],354 "returns": [355 {356 "kind": "typeIdentifier",357 "preciseIdentifier": "c:v",358 "spelling": "void"359 }360 ]361 },362 "identifier": {363 "interfaceLanguage": "c",364 "precise": "c:@F@add"365 },366 "kind": {367 "displayName": "Function",368 "identifier": "c.func"369 },370 "location": {371 "position": {372 "character": 5,373 "line": 8374 },375 "uri": "file://INPUT_DIR/input.h"376 },377 "names": {378 "navigator": [379 {380 "kind": "identifier",381 "spelling": "add"382 }383 ],384 "subHeading": [385 {386 "kind": "identifier",387 "spelling": "add"388 }389 ],390 "title": "add"391 },392 "pathComponents": [393 "add"394 ]395 }396 ]397}398