blob: f108b3aa6c328da3c463c93d52aa59d76bc60815 [file] [log] [blame]
Ted Kremeneka734a0e2012-12-22 01:34:09 +00001// RUN: %clang_cc1 %s -fsyntax-only -verify -Wduplicate-enum
2// RUN: %clang_cc1 %s -x c++ -fsyntax-only -verify -Wduplicate-enum
3enum A {
4 A1 = 0, // expected-note {{element A1 also has value 0}}
5 A2 = -1,
6 A3, // expected-warning {{element A3 has been implicitly assigned 0 which another element has been assigned}}
7 A4};
8
9enum B {
10 B1 = -1, // expected-note {{element B1 also has value -1}}
11 B2, // expected-warning {{element B2 has been implicitly assigned 0 which another element has been assigned}}
12 B3,
13 B4 = -2,
14 B5, // expected-warning {{element B5 has been implicitly assigned -1 which another element has been assigned}}
15 B6 // expected-note {{element B6 also has value 0}}
16};
17
18enum C { C1, C2 = -1, C3 }; // expected-warning{{element C1 has been implicitly assigned 0 which another element has been assigned}} \
19 // expected-note {{element C3 also has value 0}}
20
21enum D {
22 D1,
23 D2,
24 D3, // expected-warning{{element D3 has been implicitly assigned 2 which another element has been assigned}}
25 D4 = D2, // no warning
26 D5 = 2 // expected-note {{element D5 also has value 2}}
27};
28
29enum E {
30 E1,
31 E2 = E1,
32 E3 = E2
33};
34
35enum F {
36 F1,
37 F2,
38 FCount,
39 FMax = FCount - 1
40};
41
42enum G {
43 G1,
44 G2,
45 GMax = G2,
46 GCount = GMax + 1
47};
48
49enum {
50 H1 = 0,
51 H2 = -1,
52 H3,
53 H4};
54
55enum {
56 I1 = -1,
57 I2,
58 I3,
59 I4 = -2,
60 I5,
61 I6
62};
63
64enum { J1, J2 = -1, J3 };
65
66enum {
67 K1,
68 K2,
69 K3,
70 K4 = K2,
71 K5 = 2
72};
73
74enum {
75 L1,
76 L2 = L1,
77 L3 = L2
78};
79
80enum {
81 M1,
82 M2,
83 MCount,
84 MMax = MCount - 1
85};
86
87enum {
88 N1,
89 N2,
90 NMax = N2,
91 NCount = NMax + 1
92};
Benjamin Kramerefac8da2013-04-07 14:10:40 +000093
94// PR15693
95enum enum1 {
96 VALUE // expected-note{{previous definition is here}}
97};
98
99enum enum2 {
100 VALUE // expected-error{{redefinition of enumerator 'VALUE'}}
101};