18d8c8981SErick Velez // RUN: rm -rf %t 28d8c8981SErick Velez // RUN: split-file %s %t 38d8c8981SErick Velez // RUN: sed -e "s@INPUT_DIR@%{/t:regex_replacement}@g" \ 48d8c8981SErick 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 \ 68d8c8981SErick Velez // RUN: -x c++-header %t/input.h -o %t/output.json -verify 78d8c8981SErick Velez 88d8c8981SErick Velez // Generator version is not consistent across test runs, normalize it. 98d8c8981SErick Velez // RUN: sed -e "s@\"generator\": \".*\"@\"generator\": \"?\"@g" \ 108d8c8981SErick Velez // RUN: %t/output.json >> %t/output-normalized.json 118d8c8981SErick Velez // RUN: diff %t/reference.output.json %t/output-normalized.json 128d8c8981SErick Velez 138d8c8981SErick Velez //--- input.h 148d8c8981SErick Velez template<typename T> T Foo = T(3.14); 158d8c8981SErick Velez 168d8c8981SErick Velez template<> int Foo<int>; 178d8c8981SErick Velez /// expected-no-diagnostics 188d8c8981SErick Velez 198d8c8981SErick Velez //--- reference.output.json.in 208d8c8981SErick Velez { 218d8c8981SErick Velez "metadata": { 228d8c8981SErick Velez "formatVersion": { 238d8c8981SErick Velez "major": 0, 248d8c8981SErick Velez "minor": 5, 258d8c8981SErick Velez "patch": 3 268d8c8981SErick Velez }, 278d8c8981SErick Velez "generator": "?" 288d8c8981SErick Velez }, 298d8c8981SErick Velez "module": { 308d8c8981SErick Velez "name": "", 318d8c8981SErick Velez "platform": { 328d8c8981SErick Velez "architecture": "arm64", 338d8c8981SErick Velez "operatingSystem": { 348d8c8981SErick Velez "minimumVersion": { 358d8c8981SErick Velez "major": 11, 368d8c8981SErick Velez "minor": 0, 378d8c8981SErick Velez "patch": 0 388d8c8981SErick Velez }, 398d8c8981SErick Velez "name": "macosx" 408d8c8981SErick Velez }, 418d8c8981SErick Velez "vendor": "apple" 428d8c8981SErick Velez } 438d8c8981SErick Velez }, 448d8c8981SErick Velez "relationships": [], 458d8c8981SErick Velez "symbols": [ 468d8c8981SErick Velez { 478d8c8981SErick Velez "accessLevel": "public", 488d8c8981SErick Velez "declarationFragments": [ 498d8c8981SErick Velez { 508d8c8981SErick Velez "kind": "keyword", 518d8c8981SErick Velez "spelling": "template" 528d8c8981SErick Velez }, 538d8c8981SErick Velez { 548d8c8981SErick Velez "kind": "text", 558d8c8981SErick Velez "spelling": " <" 568d8c8981SErick Velez }, 578d8c8981SErick Velez { 588d8c8981SErick Velez "kind": "keyword", 598d8c8981SErick Velez "spelling": "typename" 608d8c8981SErick Velez }, 618d8c8981SErick Velez { 628d8c8981SErick Velez "kind": "text", 638d8c8981SErick Velez "spelling": " " 648d8c8981SErick Velez }, 658d8c8981SErick Velez { 668d8c8981SErick Velez "kind": "genericParameter", 678d8c8981SErick Velez "spelling": "T" 688d8c8981SErick Velez }, 698d8c8981SErick Velez { 708d8c8981SErick Velez "kind": "text", 718d8c8981SErick Velez "spelling": "> " 728d8c8981SErick Velez }, 738d8c8981SErick Velez { 748d8c8981SErick Velez "kind": "typeIdentifier", 758d8c8981SErick Velez "preciseIdentifier": "c:t0.0", 768d8c8981SErick Velez "spelling": "T" 778d8c8981SErick Velez }, 788d8c8981SErick Velez { 798d8c8981SErick Velez "kind": "text", 808d8c8981SErick Velez "spelling": " " 818d8c8981SErick Velez }, 828d8c8981SErick Velez { 838d8c8981SErick Velez "kind": "identifier", 848d8c8981SErick Velez "spelling": "Foo" 858d8c8981SErick Velez }, 868d8c8981SErick Velez { 878d8c8981SErick Velez "kind": "text", 888d8c8981SErick Velez "spelling": ";" 898d8c8981SErick Velez } 908d8c8981SErick Velez ], 918d8c8981SErick Velez "identifier": { 928d8c8981SErick Velez "interfaceLanguage": "c++", 938d8c8981SErick Velez "precise": "c:@Foo" 948d8c8981SErick Velez }, 958d8c8981SErick Velez "kind": { 968d8c8981SErick Velez "displayName": "Global Variable Template", 978d8c8981SErick Velez "identifier": "c++.var" 988d8c8981SErick Velez }, 998d8c8981SErick Velez "location": { 1008d8c8981SErick Velez "position": { 10163537872SQuietMisdreavus "character": 23, 10263537872SQuietMisdreavus "line": 0 1038d8c8981SErick Velez }, 1048d8c8981SErick Velez "uri": "file://INPUT_DIR/input.h" 1058d8c8981SErick Velez }, 1068d8c8981SErick Velez "names": { 1078d8c8981SErick Velez "navigator": [ 1088d8c8981SErick Velez { 1098d8c8981SErick Velez "kind": "identifier", 1108d8c8981SErick Velez "spelling": "Foo" 1118d8c8981SErick Velez } 1128d8c8981SErick Velez ], 1138d8c8981SErick Velez "subHeading": [ 1148d8c8981SErick Velez { 1158d8c8981SErick Velez "kind": "identifier", 1168d8c8981SErick Velez "spelling": "Foo" 1178d8c8981SErick Velez } 1188d8c8981SErick Velez ], 1198d8c8981SErick Velez "title": "Foo" 1208d8c8981SErick Velez }, 1218d8c8981SErick Velez "pathComponents": [ 1228d8c8981SErick Velez "Foo" 1238d8c8981SErick Velez ], 1248d8c8981SErick Velez "swiftGenerics": { 1258d8c8981SErick Velez "parameters": [ 1268d8c8981SErick Velez { 1278d8c8981SErick Velez "depth": 0, 1288d8c8981SErick Velez "index": 0, 1298d8c8981SErick Velez "name": "T" 1308d8c8981SErick Velez } 1318d8c8981SErick Velez ] 1328d8c8981SErick Velez } 1338d8c8981SErick Velez }, 1348d8c8981SErick Velez { 1358d8c8981SErick Velez "accessLevel": "public", 1368d8c8981SErick Velez "declarationFragments": [ 1378d8c8981SErick Velez { 1388d8c8981SErick Velez "kind": "keyword", 1398d8c8981SErick Velez "spelling": "template" 1408d8c8981SErick Velez }, 1418d8c8981SErick Velez { 1428d8c8981SErick Velez "kind": "text", 1438d8c8981SErick Velez "spelling": " <> " 1448d8c8981SErick Velez }, 1458d8c8981SErick Velez { 1468d8c8981SErick Velez "kind": "typeIdentifier", 1478d8c8981SErick Velez "preciseIdentifier": "c:I", 1488d8c8981SErick Velez "spelling": "int" 1498d8c8981SErick Velez }, 1508d8c8981SErick Velez { 1518d8c8981SErick Velez "kind": "text", 1528d8c8981SErick Velez "spelling": " " 1538d8c8981SErick Velez }, 1548d8c8981SErick Velez { 1558d8c8981SErick Velez "kind": "identifier", 1568d8c8981SErick Velez "spelling": "Foo" 1578d8c8981SErick Velez }, 1588d8c8981SErick Velez { 1598d8c8981SErick Velez "kind": "text", 1608d8c8981SErick Velez "spelling": "<" 1618d8c8981SErick Velez }, 1628d8c8981SErick Velez { 1638d8c8981SErick Velez "kind": "typeIdentifier", 1648d8c8981SErick Velez "preciseIdentifier": "c:I", 1658d8c8981SErick Velez "spelling": "int" 1668d8c8981SErick Velez }, 1678d8c8981SErick Velez { 1688d8c8981SErick Velez "kind": "text", 1698d8c8981SErick Velez "spelling": ">;" 1708d8c8981SErick Velez } 1718d8c8981SErick Velez ], 1728d8c8981SErick Velez "identifier": { 1738d8c8981SErick Velez "interfaceLanguage": "c++", 1748d8c8981SErick Velez "precise": "c:@Foo>#I" 1758d8c8981SErick Velez }, 1768d8c8981SErick Velez "kind": { 1778d8c8981SErick Velez "displayName": "Global Variable Template Specialization", 1788d8c8981SErick Velez "identifier": "c++.var" 1798d8c8981SErick Velez }, 1808d8c8981SErick Velez "location": { 1818d8c8981SErick Velez "position": { 18263537872SQuietMisdreavus "character": 15, 18363537872SQuietMisdreavus "line": 2 1848d8c8981SErick Velez }, 1858d8c8981SErick Velez "uri": "file://INPUT_DIR/input.h" 1868d8c8981SErick Velez }, 1878d8c8981SErick Velez "names": { 1888d8c8981SErick Velez "navigator": [ 1898d8c8981SErick Velez { 1908d8c8981SErick Velez "kind": "identifier", 1918d8c8981SErick Velez "spelling": "Foo" 1928d8c8981SErick Velez } 1938d8c8981SErick Velez ], 1948d8c8981SErick Velez "subHeading": [ 1958d8c8981SErick Velez { 1968d8c8981SErick Velez "kind": "identifier", 1978d8c8981SErick Velez "spelling": "Foo" 1988d8c8981SErick Velez } 1998d8c8981SErick Velez ], 2008d8c8981SErick Velez "title": "Foo" 2018d8c8981SErick Velez }, 2028d8c8981SErick Velez "pathComponents": [ 2038d8c8981SErick Velez "Foo" 2048d8c8981SErick Velez ] 2058d8c8981SErick Velez } 2068d8c8981SErick Velez ] 2078d8c8981SErick Velez } 208