754 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_cc1 -extract-api --pretty-sgf -triple arm64-apple-macosx \6// RUN: -x c-header %t/input.h -o %t/output.json -verify7 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//--- input.h14/// Kinds of vehicles15enum Vehicle {16 Bicycle,17 Car,18 Train, ///< Move this to the top! -Sheldon19 Ship,20 Airplane,21};22 23enum Direction : unsigned char {24 North = 0,25 East,26 South,27 West28};29 30enum {31 Constant = 132};33 34enum {35 OtherConstant = 236};37// expected-no-diagnostics38 39//--- reference.output.json.in40{41 "metadata": {42 "formatVersion": {43 "major": 0,44 "minor": 5,45 "patch": 346 },47 "generator": "?"48 },49 "module": {50 "name": "",51 "platform": {52 "architecture": "arm64",53 "operatingSystem": {54 "minimumVersion": {55 "major": 11,56 "minor": 0,57 "patch": 058 },59 "name": "macosx"60 },61 "vendor": "apple"62 }63 },64 "relationships": [65 {66 "kind": "memberOf",67 "source": "c:@E@Vehicle@Bicycle",68 "target": "c:@E@Vehicle",69 "targetFallback": "Vehicle"70 },71 {72 "kind": "memberOf",73 "source": "c:@E@Vehicle@Car",74 "target": "c:@E@Vehicle",75 "targetFallback": "Vehicle"76 },77 {78 "kind": "memberOf",79 "source": "c:@E@Vehicle@Train",80 "target": "c:@E@Vehicle",81 "targetFallback": "Vehicle"82 },83 {84 "kind": "memberOf",85 "source": "c:@E@Vehicle@Ship",86 "target": "c:@E@Vehicle",87 "targetFallback": "Vehicle"88 },89 {90 "kind": "memberOf",91 "source": "c:@E@Vehicle@Airplane",92 "target": "c:@E@Vehicle",93 "targetFallback": "Vehicle"94 },95 {96 "kind": "memberOf",97 "source": "c:@E@Direction@North",98 "target": "c:@E@Direction",99 "targetFallback": "Direction"100 },101 {102 "kind": "memberOf",103 "source": "c:@E@Direction@East",104 "target": "c:@E@Direction",105 "targetFallback": "Direction"106 },107 {108 "kind": "memberOf",109 "source": "c:@E@Direction@South",110 "target": "c:@E@Direction",111 "targetFallback": "Direction"112 },113 {114 "kind": "memberOf",115 "source": "c:@E@Direction@West",116 "target": "c:@E@Direction",117 "targetFallback": "Direction"118 }119 ],120 "symbols": [121 {122 "accessLevel": "public",123 "declarationFragments": [124 {125 "kind": "keyword",126 "spelling": "enum"127 },128 {129 "kind": "text",130 "spelling": " "131 },132 {133 "kind": "identifier",134 "spelling": "Vehicle"135 },136 {137 "kind": "text",138 "spelling": " : "139 },140 {141 "kind": "typeIdentifier",142 "preciseIdentifier": "c:i",143 "spelling": "unsigned int"144 },145 {146 "kind": "text",147 "spelling": ";"148 }149 ],150 "docComment": {151 "lines": [152 {153 "range": {154 "end": {155 "character": 21,156 "line": 0157 },158 "start": {159 "character": 4,160 "line": 0161 }162 },163 "text": "Kinds of vehicles"164 }165 ]166 },167 "identifier": {168 "interfaceLanguage": "c",169 "precise": "c:@E@Vehicle"170 },171 "kind": {172 "displayName": "Enumeration",173 "identifier": "c.enum"174 },175 "location": {176 "position": {177 "character": 5,178 "line": 1179 },180 "uri": "file://INPUT_DIR/input.h"181 },182 "names": {183 "navigator": [184 {185 "kind": "identifier",186 "spelling": "Vehicle"187 }188 ],189 "subHeading": [190 {191 "kind": "identifier",192 "spelling": "Vehicle"193 }194 ],195 "title": "Vehicle"196 },197 "pathComponents": [198 "Vehicle"199 ]200 },201 {202 "accessLevel": "public",203 "declarationFragments": [204 {205 "kind": "identifier",206 "spelling": "Bicycle"207 }208 ],209 "identifier": {210 "interfaceLanguage": "c",211 "precise": "c:@E@Vehicle@Bicycle"212 },213 "kind": {214 "displayName": "Enumeration Case",215 "identifier": "c.enum.case"216 },217 "location": {218 "position": {219 "character": 2,220 "line": 2221 },222 "uri": "file://INPUT_DIR/input.h"223 },224 "names": {225 "navigator": [226 {227 "kind": "identifier",228 "spelling": "Bicycle"229 }230 ],231 "subHeading": [232 {233 "kind": "identifier",234 "spelling": "Bicycle"235 }236 ],237 "title": "Bicycle"238 },239 "pathComponents": [240 "Vehicle",241 "Bicycle"242 ]243 },244 {245 "accessLevel": "public",246 "declarationFragments": [247 {248 "kind": "identifier",249 "spelling": "Car"250 }251 ],252 "identifier": {253 "interfaceLanguage": "c",254 "precise": "c:@E@Vehicle@Car"255 },256 "kind": {257 "displayName": "Enumeration Case",258 "identifier": "c.enum.case"259 },260 "location": {261 "position": {262 "character": 2,263 "line": 3264 },265 "uri": "file://INPUT_DIR/input.h"266 },267 "names": {268 "navigator": [269 {270 "kind": "identifier",271 "spelling": "Car"272 }273 ],274 "subHeading": [275 {276 "kind": "identifier",277 "spelling": "Car"278 }279 ],280 "title": "Car"281 },282 "pathComponents": [283 "Vehicle",284 "Car"285 ]286 },287 {288 "accessLevel": "public",289 "declarationFragments": [290 {291 "kind": "identifier",292 "spelling": "Train"293 }294 ],295 "docComment": {296 "lines": [297 {298 "range": {299 "end": {300 "character": 44,301 "line": 4302 },303 "start": {304 "character": 14,305 "line": 4306 }307 },308 "text": "Move this to the top! -Sheldon"309 }310 ]311 },312 "identifier": {313 "interfaceLanguage": "c",314 "precise": "c:@E@Vehicle@Train"315 },316 "kind": {317 "displayName": "Enumeration Case",318 "identifier": "c.enum.case"319 },320 "location": {321 "position": {322 "character": 2,323 "line": 4324 },325 "uri": "file://INPUT_DIR/input.h"326 },327 "names": {328 "navigator": [329 {330 "kind": "identifier",331 "spelling": "Train"332 }333 ],334 "subHeading": [335 {336 "kind": "identifier",337 "spelling": "Train"338 }339 ],340 "title": "Train"341 },342 "pathComponents": [343 "Vehicle",344 "Train"345 ]346 },347 {348 "accessLevel": "public",349 "declarationFragments": [350 {351 "kind": "identifier",352 "spelling": "Ship"353 }354 ],355 "identifier": {356 "interfaceLanguage": "c",357 "precise": "c:@E@Vehicle@Ship"358 },359 "kind": {360 "displayName": "Enumeration Case",361 "identifier": "c.enum.case"362 },363 "location": {364 "position": {365 "character": 2,366 "line": 5367 },368 "uri": "file://INPUT_DIR/input.h"369 },370 "names": {371 "navigator": [372 {373 "kind": "identifier",374 "spelling": "Ship"375 }376 ],377 "subHeading": [378 {379 "kind": "identifier",380 "spelling": "Ship"381 }382 ],383 "title": "Ship"384 },385 "pathComponents": [386 "Vehicle",387 "Ship"388 ]389 },390 {391 "accessLevel": "public",392 "declarationFragments": [393 {394 "kind": "identifier",395 "spelling": "Airplane"396 }397 ],398 "identifier": {399 "interfaceLanguage": "c",400 "precise": "c:@E@Vehicle@Airplane"401 },402 "kind": {403 "displayName": "Enumeration Case",404 "identifier": "c.enum.case"405 },406 "location": {407 "position": {408 "character": 2,409 "line": 6410 },411 "uri": "file://INPUT_DIR/input.h"412 },413 "names": {414 "navigator": [415 {416 "kind": "identifier",417 "spelling": "Airplane"418 }419 ],420 "subHeading": [421 {422 "kind": "identifier",423 "spelling": "Airplane"424 }425 ],426 "title": "Airplane"427 },428 "pathComponents": [429 "Vehicle",430 "Airplane"431 ]432 },433 {434 "accessLevel": "public",435 "declarationFragments": [436 {437 "kind": "keyword",438 "spelling": "enum"439 },440 {441 "kind": "text",442 "spelling": " "443 },444 {445 "kind": "identifier",446 "spelling": "Direction"447 },448 {449 "kind": "text",450 "spelling": " : "451 },452 {453 "kind": "typeIdentifier",454 "preciseIdentifier": "c:c",455 "spelling": "unsigned char"456 },457 {458 "kind": "text",459 "spelling": ";"460 }461 ],462 "identifier": {463 "interfaceLanguage": "c",464 "precise": "c:@E@Direction"465 },466 "kind": {467 "displayName": "Enumeration",468 "identifier": "c.enum"469 },470 "location": {471 "position": {472 "character": 5,473 "line": 9474 },475 "uri": "file://INPUT_DIR/input.h"476 },477 "names": {478 "navigator": [479 {480 "kind": "identifier",481 "spelling": "Direction"482 }483 ],484 "subHeading": [485 {486 "kind": "identifier",487 "spelling": "Direction"488 }489 ],490 "title": "Direction"491 },492 "pathComponents": [493 "Direction"494 ]495 },496 {497 "accessLevel": "public",498 "declarationFragments": [499 {500 "kind": "identifier",501 "spelling": "North"502 }503 ],504 "identifier": {505 "interfaceLanguage": "c",506 "precise": "c:@E@Direction@North"507 },508 "kind": {509 "displayName": "Enumeration Case",510 "identifier": "c.enum.case"511 },512 "location": {513 "position": {514 "character": 2,515 "line": 10516 },517 "uri": "file://INPUT_DIR/input.h"518 },519 "names": {520 "navigator": [521 {522 "kind": "identifier",523 "spelling": "North"524 }525 ],526 "subHeading": [527 {528 "kind": "identifier",529 "spelling": "North"530 }531 ],532 "title": "North"533 },534 "pathComponents": [535 "Direction",536 "North"537 ]538 },539 {540 "accessLevel": "public",541 "declarationFragments": [542 {543 "kind": "identifier",544 "spelling": "East"545 }546 ],547 "identifier": {548 "interfaceLanguage": "c",549 "precise": "c:@E@Direction@East"550 },551 "kind": {552 "displayName": "Enumeration Case",553 "identifier": "c.enum.case"554 },555 "location": {556 "position": {557 "character": 2,558 "line": 11559 },560 "uri": "file://INPUT_DIR/input.h"561 },562 "names": {563 "navigator": [564 {565 "kind": "identifier",566 "spelling": "East"567 }568 ],569 "subHeading": [570 {571 "kind": "identifier",572 "spelling": "East"573 }574 ],575 "title": "East"576 },577 "pathComponents": [578 "Direction",579 "East"580 ]581 },582 {583 "accessLevel": "public",584 "declarationFragments": [585 {586 "kind": "identifier",587 "spelling": "South"588 }589 ],590 "identifier": {591 "interfaceLanguage": "c",592 "precise": "c:@E@Direction@South"593 },594 "kind": {595 "displayName": "Enumeration Case",596 "identifier": "c.enum.case"597 },598 "location": {599 "position": {600 "character": 2,601 "line": 12602 },603 "uri": "file://INPUT_DIR/input.h"604 },605 "names": {606 "navigator": [607 {608 "kind": "identifier",609 "spelling": "South"610 }611 ],612 "subHeading": [613 {614 "kind": "identifier",615 "spelling": "South"616 }617 ],618 "title": "South"619 },620 "pathComponents": [621 "Direction",622 "South"623 ]624 },625 {626 "accessLevel": "public",627 "declarationFragments": [628 {629 "kind": "identifier",630 "spelling": "West"631 }632 ],633 "identifier": {634 "interfaceLanguage": "c",635 "precise": "c:@E@Direction@West"636 },637 "kind": {638 "displayName": "Enumeration Case",639 "identifier": "c.enum.case"640 },641 "location": {642 "position": {643 "character": 2,644 "line": 13645 },646 "uri": "file://INPUT_DIR/input.h"647 },648 "names": {649 "navigator": [650 {651 "kind": "identifier",652 "spelling": "West"653 }654 ],655 "subHeading": [656 {657 "kind": "identifier",658 "spelling": "West"659 }660 ],661 "title": "West"662 },663 "pathComponents": [664 "Direction",665 "West"666 ]667 },668 {669 "accessLevel": "public",670 "declarationFragments": [671 {672 "kind": "identifier",673 "spelling": "Constant"674 }675 ],676 "identifier": {677 "interfaceLanguage": "c",678 "precise": "c:@Ea@Constant@Constant"679 },680 "kind": {681 "displayName": "Enumeration Case",682 "identifier": "c.enum.case"683 },684 "location": {685 "position": {686 "character": 2,687 "line": 17688 },689 "uri": "file://INPUT_DIR/input.h"690 },691 "names": {692 "navigator": [693 {694 "kind": "identifier",695 "spelling": "Constant"696 }697 ],698 "subHeading": [699 {700 "kind": "identifier",701 "spelling": "Constant"702 }703 ],704 "title": "Constant"705 },706 "pathComponents": [707 "Constant"708 ]709 },710 {711 "accessLevel": "public",712 "declarationFragments": [713 {714 "kind": "identifier",715 "spelling": "OtherConstant"716 }717 ],718 "identifier": {719 "interfaceLanguage": "c",720 "precise": "c:@Ea@OtherConstant@OtherConstant"721 },722 "kind": {723 "displayName": "Enumeration Case",724 "identifier": "c.enum.case"725 },726 "location": {727 "position": {728 "character": 2,729 "line": 21730 },731 "uri": "file://INPUT_DIR/input.h"732 },733 "names": {734 "navigator": [735 {736 "kind": "identifier",737 "spelling": "OtherConstant"738 }739 ],740 "subHeading": [741 {742 "kind": "identifier",743 "spelling": "OtherConstant"744 }745 ],746 "title": "OtherConstant"747 },748 "pathComponents": [749 "OtherConstant"750 ]751 }752 ]753}754