xref: /llvm-project/clang/test/ExtractAPI/global_var_template.cpp (revision 7a6747939218efbe3b1d2cc0f896dfa97c0ff40f)
1 // RUN: rm -rf %t
2 // RUN: split-file %s %t
3 // RUN: sed -e "s@INPUT_DIR@%{/t:regex_replacement}@g" \
4 // RUN: %t/reference.output.json.in >> %t/reference.output.json
5 // RUN: %clang_cc1 -extract-api --pretty-sgf -triple arm64-apple-macosx \
6 // RUN:   -x c++-header %t/input.h -o %t/output.json -verify
7 
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.json
11 // RUN: diff %t/reference.output.json %t/output-normalized.json
12 
13 //--- input.h
14 template<typename T> T Foo = T(3.14);
15 /// expected-no-diagnostics
16 
17 //--- reference.output.json.in
18 {
19   "metadata": {
20     "formatVersion": {
21       "major": 0,
22       "minor": 5,
23       "patch": 3
24     },
25     "generator": "?"
26   },
27   "module": {
28     "name": "",
29     "platform": {
30       "architecture": "arm64",
31       "operatingSystem": {
32         "minimumVersion": {
33           "major": 11,
34           "minor": 0,
35           "patch": 0
36         },
37         "name": "macosx"
38       },
39       "vendor": "apple"
40     }
41   },
42   "relationships": [],
43   "symbols": [
44     {
45       "accessLevel": "public",
46       "declarationFragments": [
47         {
48           "kind": "keyword",
49           "spelling": "template"
50         },
51         {
52           "kind": "text",
53           "spelling": " <"
54         },
55         {
56           "kind": "keyword",
57           "spelling": "typename"
58         },
59         {
60           "kind": "text",
61           "spelling": " "
62         },
63         {
64           "kind": "genericParameter",
65           "spelling": "T"
66         },
67         {
68           "kind": "text",
69           "spelling": "> "
70         },
71         {
72           "kind": "typeIdentifier",
73           "preciseIdentifier": "c:t0.0",
74           "spelling": "T"
75         },
76         {
77           "kind": "text",
78           "spelling": " "
79         },
80         {
81           "kind": "identifier",
82           "spelling": "Foo"
83         },
84         {
85           "kind": "text",
86           "spelling": ";"
87         }
88       ],
89       "identifier": {
90         "interfaceLanguage": "c++",
91         "precise": "c:@Foo"
92       },
93       "kind": {
94         "displayName": "Global Variable Template",
95         "identifier": "c++.var"
96       },
97       "location": {
98         "position": {
99           "character": 23,
100           "line": 0
101         },
102         "uri": "file://INPUT_DIR/input.h"
103       },
104       "names": {
105         "navigator": [
106           {
107             "kind": "identifier",
108             "spelling": "Foo"
109           }
110         ],
111         "subHeading": [
112           {
113             "kind": "identifier",
114             "spelling": "Foo"
115           }
116         ],
117         "title": "Foo"
118       },
119       "pathComponents": [
120         "Foo"
121       ],
122       "swiftGenerics": {
123         "parameters": [
124           {
125             "depth": 0,
126             "index": 0,
127             "name": "T"
128           }
129         ]
130       }
131     }
132   ]
133 }
134