blob: 5e564df7078ef4647fc19566231f2d931f0a67ec [file] [log] [blame]
Aaron Ballman2ce598a2019-05-13 21:39:55 +00001// RUN: %clang_cc1 -triple x86_64-pc-linux -std=c++17 -ast-dump=json %s | FileCheck %s
2
3enum {
4 One,
5 Two
6};
7
Aaron Ballman2ce598a2019-05-13 21:39:55 +00008enum E {
9 Three,
10 Four
11};
12
Aaron Ballman2ce598a2019-05-13 21:39:55 +000013enum F : short {
14 Five,
15 Six
16};
17
Aaron Ballman2ce598a2019-05-13 21:39:55 +000018enum struct G {
19 Seven,
20 Eight
21};
22
Aaron Ballman2ce598a2019-05-13 21:39:55 +000023enum class H {
24 Nine,
25 Ten
26};
27
Aaron Ballman2ce598a2019-05-13 21:39:55 +000028enum class I : int {
29 Eleven,
30 Twelve
31};
32
Aaron Ballman60294f92019-06-21 14:37:39 +000033// 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: ]
Aaron Ballman2ce598a2019-05-13 21:39:55 +0000107// CHECK-NEXT: }
Aaron Ballman60294f92019-06-21 14:37:39 +0000108
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: ]
Aaron Ballman2ce598a2019-05-13 21:39:55 +0000181// CHECK-NEXT: }
Aaron Ballman60294f92019-06-21 14:37:39 +0000182
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: ]
Aaron Ballman2ce598a2019-05-13 21:39:55 +0000258// CHECK-NEXT: }
Aaron Ballman60294f92019-06-21 14:37:39 +0000259
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: ]
Aaron Ballman2ce598a2019-05-13 21:39:55 +0000336// CHECK-NEXT: }
Aaron Ballman60294f92019-06-21 14:37:39 +0000337
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: ]
Aaron Ballman2ce598a2019-05-13 21:39:55 +0000414// CHECK-NEXT: }
Aaron Ballman60294f92019-06-21 14:37:39 +0000415
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: ]
Aaron Ballman2ce598a2019-05-13 21:39:55 +0000492// CHECK-NEXT: }