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