xref: /llvm-project/clang/test/ExtractAPI/bool.c (revision b1b24d751776d5fd2218a5cb43a8d103bf59fa32)
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 --product-name=BoolTest --pretty-sgf -triple arm64-apple-macosx \
6 // RUN:   %t/input.h -o %t/output.json
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 #include <stdbool.h>
15 bool Foo;
16 
17 bool IsFoo(bool Bar);
18 // expected-no-diagnostics
19 
20 //--- reference.output.json.in
21 {
22   "metadata": {
23     "formatVersion": {
24       "major": 0,
25       "minor": 5,
26       "patch": 3
27     },
28     "generator": "?"
29   },
30   "module": {
31     "name": "BoolTest",
32     "platform": {
33       "architecture": "arm64",
34       "operatingSystem": {
35         "minimumVersion": {
36           "major": 11,
37           "minor": 0,
38           "patch": 0
39         },
40         "name": "macosx"
41       },
42       "vendor": "apple"
43     }
44   },
45   "relationships": [],
46   "symbols": [
47     {
48       "accessLevel": "public",
49       "declarationFragments": [
50         {
51           "kind": "typeIdentifier",
52           "preciseIdentifier": "c:b",
53           "spelling": "bool"
54         },
55         {
56           "kind": "text",
57           "spelling": " "
58         },
59         {
60           "kind": "identifier",
61           "spelling": "Foo"
62         },
63         {
64           "kind": "text",
65           "spelling": ";"
66         }
67       ],
68       "identifier": {
69         "interfaceLanguage": "c",
70         "precise": "c:@Foo"
71       },
72       "kind": {
73         "displayName": "Global Variable",
74         "identifier": "c.var"
75       },
76       "location": {
77         "position": {
78           "character": 5,
79           "line": 1
80         },
81         "uri": "file://INPUT_DIR/input.h"
82       },
83       "names": {
84         "navigator": [
85           {
86             "kind": "identifier",
87             "spelling": "Foo"
88           }
89         ],
90         "subHeading": [
91           {
92             "kind": "identifier",
93             "spelling": "Foo"
94           }
95         ],
96         "title": "Foo"
97       },
98       "pathComponents": [
99         "Foo"
100       ]
101     },
102     {
103       "accessLevel": "public",
104       "declarationFragments": [
105         {
106           "kind": "typeIdentifier",
107           "preciseIdentifier": "c:b",
108           "spelling": "bool"
109         },
110         {
111           "kind": "text",
112           "spelling": " "
113         },
114         {
115           "kind": "identifier",
116           "spelling": "IsFoo"
117         },
118         {
119           "kind": "text",
120           "spelling": "("
121         },
122         {
123           "kind": "typeIdentifier",
124           "preciseIdentifier": "c:b",
125           "spelling": "bool"
126         },
127         {
128           "kind": "text",
129           "spelling": " "
130         },
131         {
132           "kind": "internalParam",
133           "spelling": "Bar"
134         },
135         {
136           "kind": "text",
137           "spelling": ");"
138         }
139       ],
140       "functionSignature": {
141         "parameters": [
142           {
143             "declarationFragments": [
144               {
145                 "kind": "typeIdentifier",
146                 "preciseIdentifier": "c:b",
147                 "spelling": "bool"
148               },
149               {
150                 "kind": "text",
151                 "spelling": " "
152               },
153               {
154                 "kind": "internalParam",
155                 "spelling": "Bar"
156               }
157             ],
158             "name": "Bar"
159           }
160         ],
161         "returns": [
162           {
163             "kind": "typeIdentifier",
164             "preciseIdentifier": "c:b",
165             "spelling": "bool"
166           }
167         ]
168       },
169       "identifier": {
170         "interfaceLanguage": "c",
171         "precise": "c:@F@IsFoo"
172       },
173       "kind": {
174         "displayName": "Function",
175         "identifier": "c.func"
176       },
177       "location": {
178         "position": {
179           "character": 5,
180           "line": 3
181         },
182         "uri": "file://INPUT_DIR/input.h"
183       },
184       "names": {
185         "navigator": [
186           {
187             "kind": "identifier",
188             "spelling": "IsFoo"
189           }
190         ],
191         "subHeading": [
192           {
193             "kind": "identifier",
194             "spelling": "IsFoo"
195           }
196         ],
197         "title": "IsFoo"
198       },
199       "pathComponents": [
200         "IsFoo"
201       ]
202     }
203   ]
204 }
205