1 // RUN: %clang_cc1 -triple x86_64-pc-linux -Wdocumentation -ast-dump=json %s | FileCheck %s
4 extern __attribute__((alias("global_decl"))) int global_alias
;
6 void cleanup_function(int*);
8 __attribute__((cleanup(cleanup_function
))) int var
;
11 __attribute__((deprecated
)) int deprecated_var0
;
12 __attribute__((deprecated("reason"))) int deprecated_var1
;
13 __attribute__((deprecated("reason", "replacement"))) int deprecated_var2
;
15 __attribute__((unavailable
)) int unavailable_var0
;
16 __attribute__((unavailable("reason"))) int unavailable_var1
;
18 __attribute__ ((section ("SECTION_NAME"))) int section_var
;
20 __attribute__ ((visibility ("hidden"))) int visibility_var
;
22 __thread
__attribute__ ((tls_model ("local-exec"))) int tls_model_var
;
24 // NOTE: CHECK lines have been autogenerated by gen_ast_dump_json_test.py
25 // using --filters=VarDecl
28 // CHECK-NOT: {{^}}Dumping
29 // CHECK: "kind": "VarDecl",
30 // CHECK-NEXT: "loc": {
31 // CHECK-NEXT: "offset": 97,
32 // CHECK-NEXT: "file": "{{.*}}",
33 // CHECK-NEXT: "line": 3,
34 // CHECK-NEXT: "col": 5,
35 // CHECK-NEXT: "tokLen": 11
37 // CHECK-NEXT: "range": {
38 // CHECK-NEXT: "begin": {
39 // CHECK-NEXT: "offset": 93,
40 // CHECK-NEXT: "col": 1,
41 // CHECK-NEXT: "tokLen": 3
43 // CHECK-NEXT: "end": {
44 // CHECK-NEXT: "offset": 97,
45 // CHECK-NEXT: "col": 5,
46 // CHECK-NEXT: "tokLen": 11
49 // CHECK-NEXT: "name": "global_decl",
50 // CHECK-NEXT: "mangledName": "global_decl",
51 // CHECK-NEXT: "type": {
52 // CHECK-NEXT: "qualType": "int"
57 // CHECK-NOT: {{^}}Dumping
58 // CHECK: "kind": "VarDecl",
59 // CHECK-NEXT: "loc": {
60 // CHECK-NEXT: "offset": 159,
61 // CHECK-NEXT: "line": 4,
62 // CHECK-NEXT: "col": 50,
63 // CHECK-NEXT: "tokLen": 12
65 // CHECK-NEXT: "range": {
66 // CHECK-NEXT: "begin": {
67 // CHECK-NEXT: "offset": 110,
68 // CHECK-NEXT: "col": 1,
69 // CHECK-NEXT: "tokLen": 6
71 // CHECK-NEXT: "end": {
72 // CHECK-NEXT: "offset": 159,
73 // CHECK-NEXT: "col": 50,
74 // CHECK-NEXT: "tokLen": 12
77 // CHECK-NEXT: "name": "global_alias",
78 // CHECK-NEXT: "mangledName": "global_alias",
79 // CHECK-NEXT: "type": {
80 // CHECK-NEXT: "qualType": "int"
82 // CHECK-NEXT: "storageClass": "extern",
83 // CHECK-NEXT: "inner": [
85 // CHECK-NEXT: "id": "0x{{.*}}",
86 // CHECK-NEXT: "kind": "AliasAttr",
87 // CHECK-NEXT: "range": {
88 // CHECK-NEXT: "begin": {
89 // CHECK-NEXT: "offset": 132,
90 // CHECK-NEXT: "col": 23,
91 // CHECK-NEXT: "tokLen": 5
93 // CHECK-NEXT: "end": {
94 // CHECK-NEXT: "offset": 151,
95 // CHECK-NEXT: "col": 42,
96 // CHECK-NEXT: "tokLen": 1
99 // CHECK-NEXT: "aliasee": "global_decl"
105 // CHECK-NOT: {{^}}Dumping
106 // CHECK: "kind": "VarDecl",
107 // CHECK-NEXT: "loc": {
108 // CHECK-NEXT: "offset": 266,
109 // CHECK-NEXT: "col": 50,
110 // CHECK-NEXT: "tokLen": 3
112 // CHECK-NEXT: "range": {
113 // CHECK-NEXT: "begin": {
114 // CHECK-NEXT: "offset": 219,
115 // CHECK-NEXT: "col": 3,
116 // CHECK-NEXT: "tokLen": 13
118 // CHECK-NEXT: "end": {
119 // CHECK-NEXT: "offset": 266,
120 // CHECK-NEXT: "col": 50,
121 // CHECK-NEXT: "tokLen": 3
124 // CHECK-NEXT: "name": "var",
125 // CHECK-NEXT: "type": {
126 // CHECK-NEXT: "qualType": "int"
128 // CHECK-NEXT: "inner": [
130 // CHECK-NEXT: "id": "0x{{.*}}",
131 // CHECK-NEXT: "kind": "CleanupAttr",
132 // CHECK-NEXT: "range": {
133 // CHECK-NEXT: "begin": {
134 // CHECK-NEXT: "offset": 234,
135 // CHECK-NEXT: "col": 18,
136 // CHECK-NEXT: "tokLen": 7
138 // CHECK-NEXT: "end": {
139 // CHECK-NEXT: "offset": 258,
140 // CHECK-NEXT: "col": 42,
141 // CHECK-NEXT: "tokLen": 1
144 // CHECK-NEXT: "cleanup_function": {
145 // CHECK-NEXT: "id": "0x{{.*}}",
146 // CHECK-NEXT: "kind": "FunctionDecl",
147 // CHECK-NEXT: "name": "cleanup_function",
148 // CHECK-NEXT: "type": {
149 // CHECK-NEXT: "qualType": "void (int *)"
157 // CHECK-NOT: {{^}}Dumping
158 // CHECK: "kind": "VarDecl",
159 // CHECK-NEXT: "loc": {
160 // CHECK-NEXT: "offset": 306,
161 // CHECK-NEXT: "line": 11,
162 // CHECK-NEXT: "col": 33,
163 // CHECK-NEXT: "tokLen": 15
165 // CHECK-NEXT: "range": {
166 // CHECK-NEXT: "begin": {
167 // CHECK-NEXT: "offset": 274,
168 // CHECK-NEXT: "col": 1,
169 // CHECK-NEXT: "tokLen": 13
171 // CHECK-NEXT: "end": {
172 // CHECK-NEXT: "offset": 306,
173 // CHECK-NEXT: "col": 33,
174 // CHECK-NEXT: "tokLen": 15
177 // CHECK-NEXT: "name": "deprecated_var0",
178 // CHECK-NEXT: "mangledName": "deprecated_var0",
179 // CHECK-NEXT: "type": {
180 // CHECK-NEXT: "qualType": "int"
182 // CHECK-NEXT: "inner": [
184 // CHECK-NEXT: "id": "0x{{.*}}",
185 // CHECK-NEXT: "kind": "DeprecatedAttr",
186 // CHECK-NEXT: "range": {
187 // CHECK-NEXT: "begin": {
188 // CHECK-NEXT: "offset": 289,
189 // CHECK-NEXT: "col": 16,
190 // CHECK-NEXT: "tokLen": 10
192 // CHECK-NEXT: "end": {
193 // CHECK-NEXT: "offset": 289,
194 // CHECK-NEXT: "col": 16,
195 // CHECK-NEXT: "tokLen": 10
203 // CHECK-NOT: {{^}}Dumping
204 // CHECK: "kind": "VarDecl",
205 // CHECK-NEXT: "loc": {
206 // CHECK-NEXT: "offset": 365,
207 // CHECK-NEXT: "line": 12,
208 // CHECK-NEXT: "col": 43,
209 // CHECK-NEXT: "tokLen": 15
211 // CHECK-NEXT: "range": {
212 // CHECK-NEXT: "begin": {
213 // CHECK-NEXT: "offset": 323,
214 // CHECK-NEXT: "col": 1,
215 // CHECK-NEXT: "tokLen": 13
217 // CHECK-NEXT: "end": {
218 // CHECK-NEXT: "offset": 365,
219 // CHECK-NEXT: "col": 43,
220 // CHECK-NEXT: "tokLen": 15
223 // CHECK-NEXT: "name": "deprecated_var1",
224 // CHECK-NEXT: "mangledName": "deprecated_var1",
225 // CHECK-NEXT: "type": {
226 // CHECK-NEXT: "qualType": "int"
228 // CHECK-NEXT: "inner": [
230 // CHECK-NEXT: "id": "0x{{.*}}",
231 // CHECK-NEXT: "kind": "DeprecatedAttr",
232 // CHECK-NEXT: "range": {
233 // CHECK-NEXT: "begin": {
234 // CHECK-NEXT: "offset": 338,
235 // CHECK-NEXT: "col": 16,
236 // CHECK-NEXT: "tokLen": 10
238 // CHECK-NEXT: "end": {
239 // CHECK-NEXT: "offset": 357,
240 // CHECK-NEXT: "col": 35,
241 // CHECK-NEXT: "tokLen": 1
244 // CHECK-NEXT: "message": "reason"
250 // CHECK-NOT: {{^}}Dumping
251 // CHECK: "kind": "VarDecl",
252 // CHECK-NEXT: "loc": {
253 // CHECK-NEXT: "offset": 439,
254 // CHECK-NEXT: "line": 13,
255 // CHECK-NEXT: "col": 58,
256 // CHECK-NEXT: "tokLen": 15
258 // CHECK-NEXT: "range": {
259 // CHECK-NEXT: "begin": {
260 // CHECK-NEXT: "offset": 382,
261 // CHECK-NEXT: "col": 1,
262 // CHECK-NEXT: "tokLen": 13
264 // CHECK-NEXT: "end": {
265 // CHECK-NEXT: "offset": 439,
266 // CHECK-NEXT: "col": 58,
267 // CHECK-NEXT: "tokLen": 15
270 // CHECK-NEXT: "name": "deprecated_var2",
271 // CHECK-NEXT: "mangledName": "deprecated_var2",
272 // CHECK-NEXT: "type": {
273 // CHECK-NEXT: "qualType": "int"
275 // CHECK-NEXT: "inner": [
277 // CHECK-NEXT: "id": "0x{{.*}}",
278 // CHECK-NEXT: "kind": "DeprecatedAttr",
279 // CHECK-NEXT: "range": {
280 // CHECK-NEXT: "begin": {
281 // CHECK-NEXT: "offset": 397,
282 // CHECK-NEXT: "col": 16,
283 // CHECK-NEXT: "tokLen": 10
285 // CHECK-NEXT: "end": {
286 // CHECK-NEXT: "offset": 431,
287 // CHECK-NEXT: "col": 50,
288 // CHECK-NEXT: "tokLen": 1
291 // CHECK-NEXT: "message": "reason",
292 // CHECK-NEXT: "replacement": "replacement"
298 // CHECK-NOT: {{^}}Dumping
299 // CHECK: "kind": "VarDecl",
300 // CHECK-NEXT: "loc": {
301 // CHECK-NEXT: "offset": 490,
302 // CHECK-NEXT: "line": 15,
303 // CHECK-NEXT: "col": 34,
304 // CHECK-NEXT: "tokLen": 16
306 // CHECK-NEXT: "range": {
307 // CHECK-NEXT: "begin": {
308 // CHECK-NEXT: "offset": 457,
309 // CHECK-NEXT: "col": 1,
310 // CHECK-NEXT: "tokLen": 13
312 // CHECK-NEXT: "end": {
313 // CHECK-NEXT: "offset": 490,
314 // CHECK-NEXT: "col": 34,
315 // CHECK-NEXT: "tokLen": 16
318 // CHECK-NEXT: "name": "unavailable_var0",
319 // CHECK-NEXT: "mangledName": "unavailable_var0",
320 // CHECK-NEXT: "type": {
321 // CHECK-NEXT: "qualType": "int"
323 // CHECK-NEXT: "inner": [
325 // CHECK-NEXT: "id": "0x{{.*}}",
326 // CHECK-NEXT: "kind": "UnavailableAttr",
327 // CHECK-NEXT: "range": {
328 // CHECK-NEXT: "begin": {
329 // CHECK-NEXT: "offset": 472,
330 // CHECK-NEXT: "col": 16,
331 // CHECK-NEXT: "tokLen": 11
333 // CHECK-NEXT: "end": {
334 // CHECK-NEXT: "offset": 472,
335 // CHECK-NEXT: "col": 16,
336 // CHECK-NEXT: "tokLen": 11
344 // CHECK-NOT: {{^}}Dumping
345 // CHECK: "kind": "VarDecl",
346 // CHECK-NEXT: "loc": {
347 // CHECK-NEXT: "offset": 551,
348 // CHECK-NEXT: "line": 16,
349 // CHECK-NEXT: "col": 44,
350 // CHECK-NEXT: "tokLen": 16
352 // CHECK-NEXT: "range": {
353 // CHECK-NEXT: "begin": {
354 // CHECK-NEXT: "offset": 508,
355 // CHECK-NEXT: "col": 1,
356 // CHECK-NEXT: "tokLen": 13
358 // CHECK-NEXT: "end": {
359 // CHECK-NEXT: "offset": 551,
360 // CHECK-NEXT: "col": 44,
361 // CHECK-NEXT: "tokLen": 16
364 // CHECK-NEXT: "name": "unavailable_var1",
365 // CHECK-NEXT: "mangledName": "unavailable_var1",
366 // CHECK-NEXT: "type": {
367 // CHECK-NEXT: "qualType": "int"
369 // CHECK-NEXT: "inner": [
371 // CHECK-NEXT: "id": "0x{{.*}}",
372 // CHECK-NEXT: "kind": "UnavailableAttr",
373 // CHECK-NEXT: "range": {
374 // CHECK-NEXT: "begin": {
375 // CHECK-NEXT: "offset": 523,
376 // CHECK-NEXT: "col": 16,
377 // CHECK-NEXT: "tokLen": 11
379 // CHECK-NEXT: "end": {
380 // CHECK-NEXT: "offset": 543,
381 // CHECK-NEXT: "col": 36,
382 // CHECK-NEXT: "tokLen": 1
385 // CHECK-NEXT: "message": "reason"
391 // CHECK-NOT: {{^}}Dumping
392 // CHECK: "kind": "VarDecl",
393 // CHECK-NEXT: "loc": {
394 // CHECK-NEXT: "offset": 617,
395 // CHECK-NEXT: "line": 18,
396 // CHECK-NEXT: "col": 48,
397 // CHECK-NEXT: "tokLen": 11
399 // CHECK-NEXT: "range": {
400 // CHECK-NEXT: "begin": {
401 // CHECK-NEXT: "offset": 570,
402 // CHECK-NEXT: "col": 1,
403 // CHECK-NEXT: "tokLen": 13
405 // CHECK-NEXT: "end": {
406 // CHECK-NEXT: "offset": 617,
407 // CHECK-NEXT: "col": 48,
408 // CHECK-NEXT: "tokLen": 11
411 // CHECK-NEXT: "name": "section_var",
412 // CHECK-NEXT: "mangledName": "section_var",
413 // CHECK-NEXT: "type": {
414 // CHECK-NEXT: "qualType": "int"
416 // CHECK-NEXT: "inner": [
418 // CHECK-NEXT: "id": "0x{{.*}}",
419 // CHECK-NEXT: "kind": "SectionAttr",
420 // CHECK-NEXT: "range": {
421 // CHECK-NEXT: "begin": {
422 // CHECK-NEXT: "offset": 586,
423 // CHECK-NEXT: "col": 17,
424 // CHECK-NEXT: "tokLen": 7
426 // CHECK-NEXT: "end": {
427 // CHECK-NEXT: "offset": 609,
428 // CHECK-NEXT: "col": 40,
429 // CHECK-NEXT: "tokLen": 1
432 // CHECK-NEXT: "section_name": "SECTION_NAME"
438 // CHECK-NOT: {{^}}Dumping
439 // CHECK: "kind": "VarDecl",
440 // CHECK-NEXT: "loc": {
441 // CHECK-NEXT: "offset": 675,
442 // CHECK-NEXT: "line": 20,
443 // CHECK-NEXT: "col": 45,
444 // CHECK-NEXT: "tokLen": 14
446 // CHECK-NEXT: "range": {
447 // CHECK-NEXT: "begin": {
448 // CHECK-NEXT: "offset": 631,
449 // CHECK-NEXT: "col": 1,
450 // CHECK-NEXT: "tokLen": 13
452 // CHECK-NEXT: "end": {
453 // CHECK-NEXT: "offset": 675,
454 // CHECK-NEXT: "col": 45,
455 // CHECK-NEXT: "tokLen": 14
458 // CHECK-NEXT: "name": "visibility_var",
459 // CHECK-NEXT: "mangledName": "visibility_var",
460 // CHECK-NEXT: "type": {
461 // CHECK-NEXT: "qualType": "int"
463 // CHECK-NEXT: "inner": [
465 // CHECK-NEXT: "id": "0x{{.*}}",
466 // CHECK-NEXT: "kind": "VisibilityAttr",
467 // CHECK-NEXT: "range": {
468 // CHECK-NEXT: "begin": {
469 // CHECK-NEXT: "offset": 647,
470 // CHECK-NEXT: "col": 17,
471 // CHECK-NEXT: "tokLen": 10
473 // CHECK-NEXT: "end": {
474 // CHECK-NEXT: "offset": 667,
475 // CHECK-NEXT: "col": 37,
476 // CHECK-NEXT: "tokLen": 1
479 // CHECK-NEXT: "visibility": "hidden"
485 // CHECK-NOT: {{^}}Dumping
486 // CHECK: "kind": "VarDecl",
487 // CHECK-NEXT: "loc": {
488 // CHECK-NEXT: "offset": 748,
489 // CHECK-NEXT: "line": 22,
490 // CHECK-NEXT: "col": 57,
491 // CHECK-NEXT: "tokLen": 13
493 // CHECK-NEXT: "range": {
494 // CHECK-NEXT: "begin": {
495 // CHECK-NEXT: "offset": 692,
496 // CHECK-NEXT: "col": 1,
497 // CHECK-NEXT: "tokLen": 8
499 // CHECK-NEXT: "end": {
500 // CHECK-NEXT: "offset": 748,
501 // CHECK-NEXT: "col": 57,
502 // CHECK-NEXT: "tokLen": 13
505 // CHECK-NEXT: "name": "tls_model_var",
506 // CHECK-NEXT: "mangledName": "tls_model_var",
507 // CHECK-NEXT: "type": {
508 // CHECK-NEXT: "qualType": "int"
510 // CHECK-NEXT: "tls": "static",
511 // CHECK-NEXT: "inner": [
513 // CHECK-NEXT: "id": "0x{{.*}}",
514 // CHECK-NEXT: "kind": "TLSModelAttr",
515 // CHECK-NEXT: "range": {
516 // CHECK-NEXT: "begin": {
517 // CHECK-NEXT: "offset": 717,
518 // CHECK-NEXT: "col": 26,
519 // CHECK-NEXT: "tokLen": 9
521 // CHECK-NEXT: "end": {
522 // CHECK-NEXT: "offset": 740,
523 // CHECK-NEXT: "col": 49,
524 // CHECK-NEXT: "tokLen": 1
527 // CHECK-NEXT: "tls_model": "local-exec"