xref: /llvm-project/clang/test/ExtractAPI/global_var_template_spec.cpp (revision 7a6747939218efbe3b1d2cc0f896dfa97c0ff40f)
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