blob: b8092f14aafdab4b36aeadb4bd0e5466d71bd94e [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
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
80enum 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
158enum 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
239enum 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
321enum 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
403enum 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: ]