aboutsummaryrefslogtreecommitdiff
path: root/test/Sema/warn-duplicate-enum.c
diff options
context:
space:
mode:
Diffstat (limited to 'test/Sema/warn-duplicate-enum.c')
-rw-r--r--test/Sema/warn-duplicate-enum.c92
1 files changed, 92 insertions, 0 deletions
diff --git a/test/Sema/warn-duplicate-enum.c b/test/Sema/warn-duplicate-enum.c
new file mode 100644
index 000000000000..239f6f1995c3
--- /dev/null
+++ b/test/Sema/warn-duplicate-enum.c
@@ -0,0 +1,92 @@
+// RUN: %clang_cc1 %s -fsyntax-only -verify -Wduplicate-enum
+// RUN: %clang_cc1 %s -x c++ -fsyntax-only -verify -Wduplicate-enum
+enum A {
+ A1 = 0, // expected-note {{element A1 also has value 0}}
+ A2 = -1,
+ A3, // expected-warning {{element A3 has been implicitly assigned 0 which another element has been assigned}}
+ A4};
+
+enum B {
+ B1 = -1, // expected-note {{element B1 also has value -1}}
+ B2, // expected-warning {{element B2 has been implicitly assigned 0 which another element has been assigned}}
+ B3,
+ B4 = -2,
+ B5, // expected-warning {{element B5 has been implicitly assigned -1 which another element has been assigned}}
+ B6 // expected-note {{element B6 also has value 0}}
+};
+
+enum C { C1, C2 = -1, C3 }; // expected-warning{{element C1 has been implicitly assigned 0 which another element has been assigned}} \
+ // expected-note {{element C3 also has value 0}}
+
+enum D {
+ D1,
+ D2,
+ D3, // expected-warning{{element D3 has been implicitly assigned 2 which another element has been assigned}}
+ D4 = D2, // no warning
+ D5 = 2 // expected-note {{element D5 also has value 2}}
+};
+
+enum E {
+ E1,
+ E2 = E1,
+ E3 = E2
+};
+
+enum F {
+ F1,
+ F2,
+ FCount,
+ FMax = FCount - 1
+};
+
+enum G {
+ G1,
+ G2,
+ GMax = G2,
+ GCount = GMax + 1
+};
+
+enum {
+ H1 = 0,
+ H2 = -1,
+ H3,
+ H4};
+
+enum {
+ I1 = -1,
+ I2,
+ I3,
+ I4 = -2,
+ I5,
+ I6
+};
+
+enum { J1, J2 = -1, J3 };
+
+enum {
+ K1,
+ K2,
+ K3,
+ K4 = K2,
+ K5 = 2
+};
+
+enum {
+ L1,
+ L2 = L1,
+ L3 = L2
+};
+
+enum {
+ M1,
+ M2,
+ MCount,
+ MMax = MCount - 1
+};
+
+enum {
+ N1,
+ N2,
+ NMax = N2,
+ NCount = NMax + 1
+};