[clang] Handle __declspec() attributes in using
[llvm-project.git] / clang / test / AST / ast-dump-enum-json.cpp
blob1590c52e6bf0fc66a8ba55dcd1dc2ad41f21994b
1 // RUN: %clang_cc1 -triple x86_64-pc-linux -std=c++17 -ast-dump=json %s | FileCheck %s
3 enum {
4 One,
5 Two
6 };
8 enum E {
9 Three,
10 Four
13 enum F : short {
14 Five,
15 Six
18 enum struct G {
19 Seven,
20 Eight
23 enum class H {
24 Nine,
25 Ten
28 enum class I : int {
29 Eleven,
30 Twelve
33 // NOTE: CHECK lines have been autogenerated by gen_ast_dump_json_test.py
34 // using --filters=EnumDecl
36 // CHECK-NOT: {{^}}Dumping
37 // CHECK: "kind": "EnumDecl",
38 // CHECK-NEXT: "loc": {
39 // CHECK-NEXT: "offset": {{[0-9]+}},
40 // CHECK-NEXT: "file": "{{.*}}",
41 // CHECK-NEXT: "line": 3,
42 // CHECK-NEXT: "col": 1,
43 // CHECK-NEXT: "tokLen": 4
44 // CHECK-NEXT: },
45 // CHECK-NEXT: "range": {
46 // CHECK-NEXT: "begin": {
47 // CHECK-NEXT: "offset": {{[0-9]+}},
48 // CHECK-NEXT: "col": 1,
49 // CHECK-NEXT: "tokLen": 4
50 // CHECK-NEXT: },
51 // CHECK-NEXT: "end": {
52 // CHECK-NEXT: "offset": {{[0-9]+}},
53 // CHECK-NEXT: "line": 6,
54 // CHECK-NEXT: "col": 1,
55 // CHECK-NEXT: "tokLen": 1
56 // CHECK-NEXT: }
57 // CHECK-NEXT: },
58 // CHECK-NEXT: "inner": [
59 // CHECK-NEXT: {
60 // CHECK-NEXT: "id": "0x{{.*}}",
61 // CHECK-NEXT: "kind": "EnumConstantDecl",
62 // CHECK-NEXT: "loc": {
63 // CHECK-NEXT: "offset": {{[0-9]+}},
64 // CHECK-NEXT: "line": 4,
65 // CHECK-NEXT: "col": 3,
66 // CHECK-NEXT: "tokLen": 3
67 // CHECK-NEXT: },
68 // CHECK-NEXT: "range": {
69 // CHECK-NEXT: "begin": {
70 // CHECK-NEXT: "offset": {{[0-9]+}},
71 // CHECK-NEXT: "col": 3,
72 // CHECK-NEXT: "tokLen": 3
73 // CHECK-NEXT: },
74 // CHECK-NEXT: "end": {
75 // CHECK-NEXT: "offset": {{[0-9]+}},
76 // CHECK-NEXT: "col": 3,
77 // CHECK-NEXT: "tokLen": 3
78 // CHECK-NEXT: }
79 // CHECK-NEXT: },
80 // CHECK-NEXT: "name": "One",
81 // CHECK-NEXT: "type": {
82 // CHECK-NEXT: "qualType": "(unnamed enum at {{.*}}:3:1)"
83 // CHECK-NEXT: }
84 // CHECK-NEXT: },
85 // CHECK-NEXT: {
86 // CHECK-NEXT: "id": "0x{{.*}}",
87 // CHECK-NEXT: "kind": "EnumConstantDecl",
88 // CHECK-NEXT: "loc": {
89 // CHECK-NEXT: "offset": {{[0-9]+}},
90 // CHECK-NEXT: "line": 5,
91 // CHECK-NEXT: "col": 3,
92 // CHECK-NEXT: "tokLen": 3
93 // CHECK-NEXT: },
94 // CHECK-NEXT: "range": {
95 // CHECK-NEXT: "begin": {
96 // CHECK-NEXT: "offset": {{[0-9]+}},
97 // CHECK-NEXT: "col": 3,
98 // CHECK-NEXT: "tokLen": 3
99 // CHECK-NEXT: },
100 // CHECK-NEXT: "end": {
101 // CHECK-NEXT: "offset": {{[0-9]+}},
102 // CHECK-NEXT: "col": 3,
103 // CHECK-NEXT: "tokLen": 3
104 // CHECK-NEXT: }
105 // CHECK-NEXT: },
106 // CHECK-NEXT: "name": "Two",
107 // CHECK-NEXT: "type": {
108 // CHECK-NEXT: "qualType": "(unnamed enum at {{.*}}:3:1)"
109 // CHECK-NEXT: }
110 // CHECK-NEXT: }
111 // CHECK-NEXT: ]
112 // CHECK-NEXT: }
114 // CHECK-NOT: {{^}}Dumping
115 // CHECK: "kind": "EnumDecl",
116 // CHECK-NEXT: "loc": {
117 // CHECK-NEXT: "offset": {{[0-9]+}},
118 // CHECK-NEXT: "line": 8,
119 // CHECK-NEXT: "col": 6,
120 // CHECK-NEXT: "tokLen": 1
121 // CHECK-NEXT: },
122 // CHECK-NEXT: "range": {
123 // CHECK-NEXT: "begin": {
124 // CHECK-NEXT: "offset": {{[0-9]+}},
125 // CHECK-NEXT: "col": 1,
126 // CHECK-NEXT: "tokLen": 4
127 // CHECK-NEXT: },
128 // CHECK-NEXT: "end": {
129 // CHECK-NEXT: "offset": {{[0-9]+}},
130 // CHECK-NEXT: "line": 11,
131 // CHECK-NEXT: "col": 1,
132 // CHECK-NEXT: "tokLen": 1
133 // CHECK-NEXT: }
134 // CHECK-NEXT: },
135 // CHECK-NEXT: "name": "E",
136 // CHECK-NEXT: "inner": [
137 // CHECK-NEXT: {
138 // CHECK-NEXT: "id": "0x{{.*}}",
139 // CHECK-NEXT: "kind": "EnumConstantDecl",
140 // CHECK-NEXT: "loc": {
141 // CHECK-NEXT: "offset": {{[0-9]+}},
142 // CHECK-NEXT: "line": 9,
143 // CHECK-NEXT: "col": 3,
144 // CHECK-NEXT: "tokLen": 5
145 // CHECK-NEXT: },
146 // CHECK-NEXT: "range": {
147 // CHECK-NEXT: "begin": {
148 // CHECK-NEXT: "offset": {{[0-9]+}},
149 // CHECK-NEXT: "col": 3,
150 // CHECK-NEXT: "tokLen": 5
151 // CHECK-NEXT: },
152 // CHECK-NEXT: "end": {
153 // CHECK-NEXT: "offset": {{[0-9]+}},
154 // CHECK-NEXT: "col": 3,
155 // CHECK-NEXT: "tokLen": 5
156 // CHECK-NEXT: }
157 // CHECK-NEXT: },
158 // CHECK-NEXT: "name": "Three",
159 // CHECK-NEXT: "type": {
160 // CHECK-NEXT: "qualType": "E"
161 // CHECK-NEXT: }
162 // CHECK-NEXT: },
163 // CHECK-NEXT: {
164 // CHECK-NEXT: "id": "0x{{.*}}",
165 // CHECK-NEXT: "kind": "EnumConstantDecl",
166 // CHECK-NEXT: "loc": {
167 // CHECK-NEXT: "offset": {{[0-9]+}},
168 // CHECK-NEXT: "line": 10,
169 // CHECK-NEXT: "col": 3,
170 // CHECK-NEXT: "tokLen": 4
171 // CHECK-NEXT: },
172 // CHECK-NEXT: "range": {
173 // CHECK-NEXT: "begin": {
174 // CHECK-NEXT: "offset": {{[0-9]+}},
175 // CHECK-NEXT: "col": 3,
176 // CHECK-NEXT: "tokLen": 4
177 // CHECK-NEXT: },
178 // CHECK-NEXT: "end": {
179 // CHECK-NEXT: "offset": {{[0-9]+}},
180 // CHECK-NEXT: "col": 3,
181 // CHECK-NEXT: "tokLen": 4
182 // CHECK-NEXT: }
183 // CHECK-NEXT: },
184 // CHECK-NEXT: "name": "Four",
185 // CHECK-NEXT: "type": {
186 // CHECK-NEXT: "qualType": "E"
187 // CHECK-NEXT: }
188 // CHECK-NEXT: }
189 // CHECK-NEXT: ]
190 // CHECK-NEXT: }
192 // CHECK-NOT: {{^}}Dumping
193 // CHECK: "kind": "EnumDecl",
194 // CHECK-NEXT: "loc": {
195 // CHECK-NEXT: "offset": {{[0-9]+}},
196 // CHECK-NEXT: "line": 13,
197 // CHECK-NEXT: "col": 6,
198 // CHECK-NEXT: "tokLen": 1
199 // CHECK-NEXT: },
200 // CHECK-NEXT: "range": {
201 // CHECK-NEXT: "begin": {
202 // CHECK-NEXT: "offset": {{[0-9]+}},
203 // CHECK-NEXT: "col": 1,
204 // CHECK-NEXT: "tokLen": 4
205 // CHECK-NEXT: },
206 // CHECK-NEXT: "end": {
207 // CHECK-NEXT: "offset": {{[0-9]+}},
208 // CHECK-NEXT: "line": 16,
209 // CHECK-NEXT: "col": 1,
210 // CHECK-NEXT: "tokLen": 1
211 // CHECK-NEXT: }
212 // CHECK-NEXT: },
213 // CHECK-NEXT: "name": "F",
214 // CHECK-NEXT: "fixedUnderlyingType": {
215 // CHECK-NEXT: "qualType": "short"
216 // CHECK-NEXT: },
217 // CHECK-NEXT: "inner": [
218 // CHECK-NEXT: {
219 // CHECK-NEXT: "id": "0x{{.*}}",
220 // CHECK-NEXT: "kind": "EnumConstantDecl",
221 // CHECK-NEXT: "loc": {
222 // CHECK-NEXT: "offset": {{[0-9]+}},
223 // CHECK-NEXT: "line": 14,
224 // CHECK-NEXT: "col": 3,
225 // CHECK-NEXT: "tokLen": 4
226 // CHECK-NEXT: },
227 // CHECK-NEXT: "range": {
228 // CHECK-NEXT: "begin": {
229 // CHECK-NEXT: "offset": {{[0-9]+}},
230 // CHECK-NEXT: "col": 3,
231 // CHECK-NEXT: "tokLen": 4
232 // CHECK-NEXT: },
233 // CHECK-NEXT: "end": {
234 // CHECK-NEXT: "offset": {{[0-9]+}},
235 // CHECK-NEXT: "col": 3,
236 // CHECK-NEXT: "tokLen": 4
237 // CHECK-NEXT: }
238 // CHECK-NEXT: },
239 // CHECK-NEXT: "name": "Five",
240 // CHECK-NEXT: "type": {
241 // CHECK-NEXT: "qualType": "F"
242 // CHECK-NEXT: }
243 // CHECK-NEXT: },
244 // CHECK-NEXT: {
245 // CHECK-NEXT: "id": "0x{{.*}}",
246 // CHECK-NEXT: "kind": "EnumConstantDecl",
247 // CHECK-NEXT: "loc": {
248 // CHECK-NEXT: "offset": {{[0-9]+}},
249 // CHECK-NEXT: "line": 15,
250 // CHECK-NEXT: "col": 3,
251 // CHECK-NEXT: "tokLen": 3
252 // CHECK-NEXT: },
253 // CHECK-NEXT: "range": {
254 // CHECK-NEXT: "begin": {
255 // CHECK-NEXT: "offset": {{[0-9]+}},
256 // CHECK-NEXT: "col": 3,
257 // CHECK-NEXT: "tokLen": 3
258 // CHECK-NEXT: },
259 // CHECK-NEXT: "end": {
260 // CHECK-NEXT: "offset": {{[0-9]+}},
261 // CHECK-NEXT: "col": 3,
262 // CHECK-NEXT: "tokLen": 3
263 // CHECK-NEXT: }
264 // CHECK-NEXT: },
265 // CHECK-NEXT: "name": "Six",
266 // CHECK-NEXT: "type": {
267 // CHECK-NEXT: "qualType": "F"
268 // CHECK-NEXT: }
269 // CHECK-NEXT: }
270 // CHECK-NEXT: ]
271 // CHECK-NEXT: }
273 // CHECK-NOT: {{^}}Dumping
274 // CHECK: "kind": "EnumDecl",
275 // CHECK-NEXT: "loc": {
276 // CHECK-NEXT: "offset": {{[0-9]+}},
277 // CHECK-NEXT: "line": 18,
278 // CHECK-NEXT: "col": 13,
279 // CHECK-NEXT: "tokLen": 1
280 // CHECK-NEXT: },
281 // CHECK-NEXT: "range": {
282 // CHECK-NEXT: "begin": {
283 // CHECK-NEXT: "offset": {{[0-9]+}},
284 // CHECK-NEXT: "col": 1,
285 // CHECK-NEXT: "tokLen": 4
286 // CHECK-NEXT: },
287 // CHECK-NEXT: "end": {
288 // CHECK-NEXT: "offset": {{[0-9]+}},
289 // CHECK-NEXT: "line": 21,
290 // CHECK-NEXT: "col": 1,
291 // CHECK-NEXT: "tokLen": 1
292 // CHECK-NEXT: }
293 // CHECK-NEXT: },
294 // CHECK-NEXT: "name": "G",
295 // CHECK-NEXT: "fixedUnderlyingType": {
296 // CHECK-NEXT: "qualType": "int"
297 // CHECK-NEXT: },
298 // CHECK-NEXT: "scopedEnumTag": "struct",
299 // CHECK-NEXT: "inner": [
300 // CHECK-NEXT: {
301 // CHECK-NEXT: "id": "0x{{.*}}",
302 // CHECK-NEXT: "kind": "EnumConstantDecl",
303 // CHECK-NEXT: "loc": {
304 // CHECK-NEXT: "offset": {{[0-9]+}},
305 // CHECK-NEXT: "line": 19,
306 // CHECK-NEXT: "col": 3,
307 // CHECK-NEXT: "tokLen": 5
308 // CHECK-NEXT: },
309 // CHECK-NEXT: "range": {
310 // CHECK-NEXT: "begin": {
311 // CHECK-NEXT: "offset": {{[0-9]+}},
312 // CHECK-NEXT: "col": 3,
313 // CHECK-NEXT: "tokLen": 5
314 // CHECK-NEXT: },
315 // CHECK-NEXT: "end": {
316 // CHECK-NEXT: "offset": {{[0-9]+}},
317 // CHECK-NEXT: "col": 3,
318 // CHECK-NEXT: "tokLen": 5
319 // CHECK-NEXT: }
320 // CHECK-NEXT: },
321 // CHECK-NEXT: "name": "Seven",
322 // CHECK-NEXT: "type": {
323 // CHECK-NEXT: "qualType": "G"
324 // CHECK-NEXT: }
325 // CHECK-NEXT: },
326 // CHECK-NEXT: {
327 // CHECK-NEXT: "id": "0x{{.*}}",
328 // CHECK-NEXT: "kind": "EnumConstantDecl",
329 // CHECK-NEXT: "loc": {
330 // CHECK-NEXT: "offset": {{[0-9]+}},
331 // CHECK-NEXT: "line": 20,
332 // CHECK-NEXT: "col": 3,
333 // CHECK-NEXT: "tokLen": 5
334 // CHECK-NEXT: },
335 // CHECK-NEXT: "range": {
336 // CHECK-NEXT: "begin": {
337 // CHECK-NEXT: "offset": {{[0-9]+}},
338 // CHECK-NEXT: "col": 3,
339 // CHECK-NEXT: "tokLen": 5
340 // CHECK-NEXT: },
341 // CHECK-NEXT: "end": {
342 // CHECK-NEXT: "offset": {{[0-9]+}},
343 // CHECK-NEXT: "col": 3,
344 // CHECK-NEXT: "tokLen": 5
345 // CHECK-NEXT: }
346 // CHECK-NEXT: },
347 // CHECK-NEXT: "name": "Eight",
348 // CHECK-NEXT: "type": {
349 // CHECK-NEXT: "qualType": "G"
350 // CHECK-NEXT: }
351 // CHECK-NEXT: }
352 // CHECK-NEXT: ]
353 // CHECK-NEXT: }
355 // CHECK-NOT: {{^}}Dumping
356 // CHECK: "kind": "EnumDecl",
357 // CHECK-NEXT: "loc": {
358 // CHECK-NEXT: "offset": {{[0-9]+}},
359 // CHECK-NEXT: "line": 23,
360 // CHECK-NEXT: "col": 12,
361 // CHECK-NEXT: "tokLen": 1
362 // CHECK-NEXT: },
363 // CHECK-NEXT: "range": {
364 // CHECK-NEXT: "begin": {
365 // CHECK-NEXT: "offset": {{[0-9]+}},
366 // CHECK-NEXT: "col": 1,
367 // CHECK-NEXT: "tokLen": 4
368 // CHECK-NEXT: },
369 // CHECK-NEXT: "end": {
370 // CHECK-NEXT: "offset": {{[0-9]+}},
371 // CHECK-NEXT: "line": 26,
372 // CHECK-NEXT: "col": 1,
373 // CHECK-NEXT: "tokLen": 1
374 // CHECK-NEXT: }
375 // CHECK-NEXT: },
376 // CHECK-NEXT: "name": "H",
377 // CHECK-NEXT: "fixedUnderlyingType": {
378 // CHECK-NEXT: "qualType": "int"
379 // CHECK-NEXT: },
380 // CHECK-NEXT: "scopedEnumTag": "class",
381 // CHECK-NEXT: "inner": [
382 // CHECK-NEXT: {
383 // CHECK-NEXT: "id": "0x{{.*}}",
384 // CHECK-NEXT: "kind": "EnumConstantDecl",
385 // CHECK-NEXT: "loc": {
386 // CHECK-NEXT: "offset": {{[0-9]+}},
387 // CHECK-NEXT: "line": 24,
388 // CHECK-NEXT: "col": 3,
389 // CHECK-NEXT: "tokLen": 4
390 // CHECK-NEXT: },
391 // CHECK-NEXT: "range": {
392 // CHECK-NEXT: "begin": {
393 // CHECK-NEXT: "offset": {{[0-9]+}},
394 // CHECK-NEXT: "col": 3,
395 // CHECK-NEXT: "tokLen": 4
396 // CHECK-NEXT: },
397 // CHECK-NEXT: "end": {
398 // CHECK-NEXT: "offset": {{[0-9]+}},
399 // CHECK-NEXT: "col": 3,
400 // CHECK-NEXT: "tokLen": 4
401 // CHECK-NEXT: }
402 // CHECK-NEXT: },
403 // CHECK-NEXT: "name": "Nine",
404 // CHECK-NEXT: "type": {
405 // CHECK-NEXT: "qualType": "H"
406 // CHECK-NEXT: }
407 // CHECK-NEXT: },
408 // CHECK-NEXT: {
409 // CHECK-NEXT: "id": "0x{{.*}}",
410 // CHECK-NEXT: "kind": "EnumConstantDecl",
411 // CHECK-NEXT: "loc": {
412 // CHECK-NEXT: "offset": {{[0-9]+}},
413 // CHECK-NEXT: "line": 25,
414 // CHECK-NEXT: "col": 3,
415 // CHECK-NEXT: "tokLen": 3
416 // CHECK-NEXT: },
417 // CHECK-NEXT: "range": {
418 // CHECK-NEXT: "begin": {
419 // CHECK-NEXT: "offset": {{[0-9]+}},
420 // CHECK-NEXT: "col": 3,
421 // CHECK-NEXT: "tokLen": 3
422 // CHECK-NEXT: },
423 // CHECK-NEXT: "end": {
424 // CHECK-NEXT: "offset": {{[0-9]+}},
425 // CHECK-NEXT: "col": 3,
426 // CHECK-NEXT: "tokLen": 3
427 // CHECK-NEXT: }
428 // CHECK-NEXT: },
429 // CHECK-NEXT: "name": "Ten",
430 // CHECK-NEXT: "type": {
431 // CHECK-NEXT: "qualType": "H"
432 // CHECK-NEXT: }
433 // CHECK-NEXT: }
434 // CHECK-NEXT: ]
435 // CHECK-NEXT: }
437 // CHECK-NOT: {{^}}Dumping
438 // CHECK: "kind": "EnumDecl",
439 // CHECK-NEXT: "loc": {
440 // CHECK-NEXT: "offset": {{[0-9]+}},
441 // CHECK-NEXT: "line": 28,
442 // CHECK-NEXT: "col": 12,
443 // CHECK-NEXT: "tokLen": 1
444 // CHECK-NEXT: },
445 // CHECK-NEXT: "range": {
446 // CHECK-NEXT: "begin": {
447 // CHECK-NEXT: "offset": {{[0-9]+}},
448 // CHECK-NEXT: "col": 1,
449 // CHECK-NEXT: "tokLen": 4
450 // CHECK-NEXT: },
451 // CHECK-NEXT: "end": {
452 // CHECK-NEXT: "offset": {{[0-9]+}},
453 // CHECK-NEXT: "line": 31,
454 // CHECK-NEXT: "col": 1,
455 // CHECK-NEXT: "tokLen": 1
456 // CHECK-NEXT: }
457 // CHECK-NEXT: },
458 // CHECK-NEXT: "name": "I",
459 // CHECK-NEXT: "fixedUnderlyingType": {
460 // CHECK-NEXT: "qualType": "int"
461 // CHECK-NEXT: },
462 // CHECK-NEXT: "scopedEnumTag": "class",
463 // CHECK-NEXT: "inner": [
464 // CHECK-NEXT: {
465 // CHECK-NEXT: "id": "0x{{.*}}",
466 // CHECK-NEXT: "kind": "EnumConstantDecl",
467 // CHECK-NEXT: "loc": {
468 // CHECK-NEXT: "offset": {{[0-9]+}},
469 // CHECK-NEXT: "line": 29,
470 // CHECK-NEXT: "col": 3,
471 // CHECK-NEXT: "tokLen": 6
472 // CHECK-NEXT: },
473 // CHECK-NEXT: "range": {
474 // CHECK-NEXT: "begin": {
475 // CHECK-NEXT: "offset": {{[0-9]+}},
476 // CHECK-NEXT: "col": 3,
477 // CHECK-NEXT: "tokLen": 6
478 // CHECK-NEXT: },
479 // CHECK-NEXT: "end": {
480 // CHECK-NEXT: "offset": {{[0-9]+}},
481 // CHECK-NEXT: "col": 3,
482 // CHECK-NEXT: "tokLen": 6
483 // CHECK-NEXT: }
484 // CHECK-NEXT: },
485 // CHECK-NEXT: "name": "Eleven",
486 // CHECK-NEXT: "type": {
487 // CHECK-NEXT: "qualType": "I"
488 // CHECK-NEXT: }
489 // CHECK-NEXT: },
490 // CHECK-NEXT: {
491 // CHECK-NEXT: "id": "0x{{.*}}",
492 // CHECK-NEXT: "kind": "EnumConstantDecl",
493 // CHECK-NEXT: "loc": {
494 // CHECK-NEXT: "offset": {{[0-9]+}},
495 // CHECK-NEXT: "line": 30,
496 // CHECK-NEXT: "col": 3,
497 // CHECK-NEXT: "tokLen": 6
498 // CHECK-NEXT: },
499 // CHECK-NEXT: "range": {
500 // CHECK-NEXT: "begin": {
501 // CHECK-NEXT: "offset": {{[0-9]+}},
502 // CHECK-NEXT: "col": 3,
503 // CHECK-NEXT: "tokLen": 6
504 // CHECK-NEXT: },
505 // CHECK-NEXT: "end": {
506 // CHECK-NEXT: "offset": {{[0-9]+}},
507 // CHECK-NEXT: "col": 3,
508 // CHECK-NEXT: "tokLen": 6
509 // CHECK-NEXT: }
510 // CHECK-NEXT: },
511 // CHECK-NEXT: "name": "Twelve",
512 // CHECK-NEXT: "type": {
513 // CHECK-NEXT: "qualType": "I"
514 // CHECK-NEXT: }
515 // CHECK-NEXT: }
516 // CHECK-NEXT: ]
517 // CHECK-NEXT: }