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