
The diagnostic system for Clang can already handle many AST nodes. Instead of converting them to strings first, just hand the AST node directly to the diagnostic system and let it handle the output. Minor changes in some diagnostic output. llvm-svn: 328688
102 lines
1.7 KiB
C
102 lines
1.7 KiB
C
// 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
|
|
};
|
|
|
|
// PR15693
|
|
enum enum1 {
|
|
VALUE // expected-note{{previous definition is here}}
|
|
};
|
|
|
|
enum enum2 {
|
|
VALUE // expected-error{{redefinition of enumerator 'VALUE'}}
|
|
};
|