17ba37f4eSErick Velez // RUN: rm -rf %t 27ba37f4eSErick Velez // RUN: split-file %s %t 37ba37f4eSErick Velez // RUN: sed -e "s@INPUT_DIR@%{/t:regex_replacement}@g" \ 47ba37f4eSErick Velez // RUN: %t/reference.output.json.in >> %t/reference.output.json 5*e05c1b46SDaniel Grumberg // RUN: %clang_cc1 -extract-api --pretty-sgf -triple arm64-apple-macosx \ 67ba37f4eSErick Velez // RUN: -x c++-header %t/input.h -o %t/output.json -verify 77ba37f4eSErick Velez 87ba37f4eSErick Velez // Generator version is not consistent across test runs, normalize it. 97ba37f4eSErick Velez // RUN: sed -e "s@\"generator\": \".*\"@\"generator\": \"?\"@g" \ 107ba37f4eSErick Velez // RUN: %t/output.json >> %t/output-normalized.json 117ba37f4eSErick Velez // RUN: diff %t/reference.output.json %t/output-normalized.json 127ba37f4eSErick Velez 137ba37f4eSErick Velez //--- input.h 147ba37f4eSErick Velez template<typename T> class Foo : public T {}; 157ba37f4eSErick Velez 167ba37f4eSErick Velez /// expected-no-diagnostics 177ba37f4eSErick Velez 187ba37f4eSErick Velez //--- reference.output.json.in 197ba37f4eSErick Velez { 207ba37f4eSErick Velez "metadata": { 217ba37f4eSErick Velez "formatVersion": { 227ba37f4eSErick Velez "major": 0, 237ba37f4eSErick Velez "minor": 5, 247ba37f4eSErick Velez "patch": 3 257ba37f4eSErick Velez }, 267ba37f4eSErick Velez "generator": "?" 277ba37f4eSErick Velez }, 287ba37f4eSErick Velez "module": { 297ba37f4eSErick Velez "name": "", 307ba37f4eSErick Velez "platform": { 317ba37f4eSErick Velez "architecture": "arm64", 327ba37f4eSErick Velez "operatingSystem": { 337ba37f4eSErick Velez "minimumVersion": { 347ba37f4eSErick Velez "major": 11, 357ba37f4eSErick Velez "minor": 0, 367ba37f4eSErick Velez "patch": 0 377ba37f4eSErick Velez }, 387ba37f4eSErick Velez "name": "macosx" 397ba37f4eSErick Velez }, 407ba37f4eSErick Velez "vendor": "apple" 417ba37f4eSErick Velez } 427ba37f4eSErick Velez }, 437ba37f4eSErick Velez "relationships": [ 447ba37f4eSErick Velez { 457ba37f4eSErick Velez "kind": "inheritsFrom", 467ba37f4eSErick Velez "source": "c:@ST>1#T@Foo", 477ba37f4eSErick Velez "target": "", 487ba37f4eSErick Velez "targetFallback": "T" 497ba37f4eSErick Velez } 507ba37f4eSErick Velez ], 517ba37f4eSErick Velez "symbols": [ 527ba37f4eSErick Velez { 537ba37f4eSErick Velez "accessLevel": "public", 547ba37f4eSErick Velez "declarationFragments": [ 557ba37f4eSErick Velez { 567ba37f4eSErick Velez "kind": "keyword", 577ba37f4eSErick Velez "spelling": "template" 587ba37f4eSErick Velez }, 597ba37f4eSErick Velez { 607ba37f4eSErick Velez "kind": "text", 617ba37f4eSErick Velez "spelling": " <" 627ba37f4eSErick Velez }, 637ba37f4eSErick Velez { 647ba37f4eSErick Velez "kind": "keyword", 657ba37f4eSErick Velez "spelling": "typename" 667ba37f4eSErick Velez }, 677ba37f4eSErick Velez { 687ba37f4eSErick Velez "kind": "text", 697ba37f4eSErick Velez "spelling": " " 707ba37f4eSErick Velez }, 717ba37f4eSErick Velez { 727ba37f4eSErick Velez "kind": "genericParameter", 737ba37f4eSErick Velez "spelling": "T" 747ba37f4eSErick Velez }, 757ba37f4eSErick Velez { 767ba37f4eSErick Velez "kind": "text", 777ba37f4eSErick Velez "spelling": "> " 787ba37f4eSErick Velez }, 797ba37f4eSErick Velez { 807ba37f4eSErick Velez "kind": "keyword", 817ba37f4eSErick Velez "spelling": "class" 827ba37f4eSErick Velez }, 837ba37f4eSErick Velez { 847ba37f4eSErick Velez "kind": "text", 857ba37f4eSErick Velez "spelling": " " 867ba37f4eSErick Velez }, 877ba37f4eSErick Velez { 887ba37f4eSErick Velez "kind": "identifier", 897ba37f4eSErick Velez "spelling": "Foo" 907ba37f4eSErick Velez }, 917ba37f4eSErick Velez { 927ba37f4eSErick Velez "kind": "text", 937ba37f4eSErick Velez "spelling": ";" 947ba37f4eSErick Velez } 957ba37f4eSErick Velez ], 967ba37f4eSErick Velez "identifier": { 977ba37f4eSErick Velez "interfaceLanguage": "c++", 987ba37f4eSErick Velez "precise": "c:@ST>1#T@Foo" 997ba37f4eSErick Velez }, 1007ba37f4eSErick Velez "kind": { 1017ba37f4eSErick Velez "displayName": "Class", 1027ba37f4eSErick Velez "identifier": "c++.class" 1037ba37f4eSErick Velez }, 1047ba37f4eSErick Velez "location": { 1057ba37f4eSErick Velez "position": { 10663537872SQuietMisdreavus "character": 27, 10763537872SQuietMisdreavus "line": 0 1087ba37f4eSErick Velez }, 1097ba37f4eSErick Velez "uri": "file://INPUT_DIR/input.h" 1107ba37f4eSErick Velez }, 1117ba37f4eSErick Velez "names": { 1127ba37f4eSErick Velez "navigator": [ 1137ba37f4eSErick Velez { 1147ba37f4eSErick Velez "kind": "identifier", 1157ba37f4eSErick Velez "spelling": "Foo" 1167ba37f4eSErick Velez } 1177ba37f4eSErick Velez ], 1187ba37f4eSErick Velez "subHeading": [ 1197ba37f4eSErick Velez { 1207ba37f4eSErick Velez "kind": "identifier", 1217ba37f4eSErick Velez "spelling": "Foo" 1227ba37f4eSErick Velez } 1237ba37f4eSErick Velez ], 1247ba37f4eSErick Velez "title": "Foo" 1257ba37f4eSErick Velez }, 1267ba37f4eSErick Velez "pathComponents": [ 1277ba37f4eSErick Velez "Foo" 1287ba37f4eSErick Velez ], 1297ba37f4eSErick Velez "swiftGenerics": { 1307ba37f4eSErick Velez "parameters": [ 1317ba37f4eSErick Velez { 1327ba37f4eSErick Velez "depth": 0, 1337ba37f4eSErick Velez "index": 0, 1347ba37f4eSErick Velez "name": "T" 1357ba37f4eSErick Velez } 1367ba37f4eSErick Velez ] 1377ba37f4eSErick Velez } 1387ba37f4eSErick Velez } 1397ba37f4eSErick Velez ] 1407ba37f4eSErick Velez } 141