llvm-project
397 строк · 8.7 Кб
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 -extract-api --pretty-sgf --product-name=GlobalRecord -target arm64-apple-macosx \
6// RUN: %t/input.h -o %t/output.json | FileCheck -allow-empty %s
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// CHECK-NOT: error:
14// CHECK-NOT: warning:
15
16//--- input.h
17int num;
18
19/**
20* \brief Add two numbers.
21* \param [in] x A number.
22* \param [in] y Another number.
23* \param [out] res The result of x + y.
24*/
25void add(const int x, const int y, int *res);
26
27char unavailable __attribute__((unavailable));
28
29//--- reference.output.json.in
30{
31"metadata": {
32"formatVersion": {
33"major": 0,
34"minor": 5,
35"patch": 3
36},
37"generator": "?"
38},
39"module": {
40"name": "GlobalRecord",
41"platform": {
42"architecture": "arm64",
43"operatingSystem": {
44"minimumVersion": {
45"major": 11,
46"minor": 0,
47"patch": 0
48},
49"name": "macosx"
50},
51"vendor": "apple"
52}
53},
54"relationships": [],
55"symbols": [
56{
57"accessLevel": "public",
58"declarationFragments": [
59{
60"kind": "typeIdentifier",
61"preciseIdentifier": "c:I",
62"spelling": "int"
63},
64{
65"kind": "text",
66"spelling": " "
67},
68{
69"kind": "identifier",
70"spelling": "num"
71},
72{
73"kind": "text",
74"spelling": ";"
75}
76],
77"identifier": {
78"interfaceLanguage": "c",
79"precise": "c:@num"
80},
81"kind": {
82"displayName": "Global Variable",
83"identifier": "c.var"
84},
85"location": {
86"position": {
87"character": 4,
88"line": 0
89},
90"uri": "file://INPUT_DIR/input.h"
91},
92"names": {
93"navigator": [
94{
95"kind": "identifier",
96"spelling": "num"
97}
98],
99"subHeading": [
100{
101"kind": "identifier",
102"spelling": "num"
103}
104],
105"title": "num"
106},
107"pathComponents": [
108"num"
109]
110},
111{
112"accessLevel": "public",
113"declarationFragments": [
114{
115"kind": "typeIdentifier",
116"preciseIdentifier": "c:v",
117"spelling": "void"
118},
119{
120"kind": "text",
121"spelling": " "
122},
123{
124"kind": "identifier",
125"spelling": "add"
126},
127{
128"kind": "text",
129"spelling": "("
130},
131{
132"kind": "keyword",
133"spelling": "const"
134},
135{
136"kind": "text",
137"spelling": " "
138},
139{
140"kind": "typeIdentifier",
141"preciseIdentifier": "c:I",
142"spelling": "int"
143},
144{
145"kind": "text",
146"spelling": " "
147},
148{
149"kind": "internalParam",
150"spelling": "x"
151},
152{
153"kind": "text",
154"spelling": ", "
155},
156{
157"kind": "keyword",
158"spelling": "const"
159},
160{
161"kind": "text",
162"spelling": " "
163},
164{
165"kind": "typeIdentifier",
166"preciseIdentifier": "c:I",
167"spelling": "int"
168},
169{
170"kind": "text",
171"spelling": " "
172},
173{
174"kind": "internalParam",
175"spelling": "y"
176},
177{
178"kind": "text",
179"spelling": ", "
180},
181{
182"kind": "typeIdentifier",
183"preciseIdentifier": "c:I",
184"spelling": "int"
185},
186{
187"kind": "text",
188"spelling": " * "
189},
190{
191"kind": "internalParam",
192"spelling": "res"
193},
194{
195"kind": "text",
196"spelling": ");"
197}
198],
199"docComment": {
200"lines": [
201{
202"range": {
203"end": {
204"character": 3,
205"line": 2
206},
207"start": {
208"character": 3,
209"line": 2
210}
211},
212"text": ""
213},
214{
215"range": {
216"end": {
217"character": 26,
218"line": 3
219},
220"start": {
221"character": 2,
222"line": 3
223}
224},
225"text": " \\brief Add two numbers."
226},
227{
228"range": {
229"end": {
230"character": 29,
231"line": 4
232},
233"start": {
234"character": 2,
235"line": 4
236}
237},
238"text": " \\param [in] x A number."
239},
240{
241"range": {
242"end": {
243"character": 35,
244"line": 5
245},
246"start": {
247"character": 2,
248"line": 5
249}
250},
251"text": " \\param [in] y Another number."
252},
253{
254"range": {
255"end": {
256"character": 40,
257"line": 6
258},
259"start": {
260"character": 2,
261"line": 6
262}
263},
264"text": " \\param [out] res The result of x + y."
265},
266{
267"range": {
268"end": {
269"character": 3,
270"line": 7
271},
272"start": {
273"character": 0,
274"line": 7
275}
276},
277"text": " "
278}
279]
280},
281"functionSignature": {
282"parameters": [
283{
284"declarationFragments": [
285{
286"kind": "keyword",
287"spelling": "const"
288},
289{
290"kind": "text",
291"spelling": " "
292},
293{
294"kind": "typeIdentifier",
295"preciseIdentifier": "c:I",
296"spelling": "int"
297},
298{
299"kind": "text",
300"spelling": " "
301},
302{
303"kind": "internalParam",
304"spelling": "x"
305}
306],
307"name": "x"
308},
309{
310"declarationFragments": [
311{
312"kind": "keyword",
313"spelling": "const"
314},
315{
316"kind": "text",
317"spelling": " "
318},
319{
320"kind": "typeIdentifier",
321"preciseIdentifier": "c:I",
322"spelling": "int"
323},
324{
325"kind": "text",
326"spelling": " "
327},
328{
329"kind": "internalParam",
330"spelling": "y"
331}
332],
333"name": "y"
334},
335{
336"declarationFragments": [
337{
338"kind": "typeIdentifier",
339"preciseIdentifier": "c:I",
340"spelling": "int"
341},
342{
343"kind": "text",
344"spelling": " * "
345},
346{
347"kind": "internalParam",
348"spelling": "res"
349}
350],
351"name": "res"
352}
353],
354"returns": [
355{
356"kind": "typeIdentifier",
357"preciseIdentifier": "c:v",
358"spelling": "void"
359}
360]
361},
362"identifier": {
363"interfaceLanguage": "c",
364"precise": "c:@F@add"
365},
366"kind": {
367"displayName": "Function",
368"identifier": "c.func"
369},
370"location": {
371"position": {
372"character": 5,
373"line": 8
374},
375"uri": "file://INPUT_DIR/input.h"
376},
377"names": {
378"navigator": [
379{
380"kind": "identifier",
381"spelling": "add"
382}
383],
384"subHeading": [
385{
386"kind": "identifier",
387"spelling": "add"
388}
389],
390"title": "add"
391},
392"pathComponents": [
393"add"
394]
395}
396]
397}
398