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