// RUN: %check_clang_tidy %s bugprone-suspicious-enum-usage %t -- -config="{CheckOptions: [{key: bugprone-suspicious-enum-usage.StrictMode, value: 0}]}" -- | |
enum Empty { | |
}; | |
enum A { | |
A = 1, | |
B = 2, | |
C = 4, | |
D = 8, | |
E = 16, | |
F = 32, | |
G = 63 | |
}; | |
enum X { | |
X = 8, | |
Y = 16, | |
Z = 4 | |
}; | |
enum { | |
P = 2, | |
Q = 3, | |
R = 4, | |
S = 8, | |
T = 16 | |
}; | |
enum { | |
H, | |
I, | |
J, | |
K, | |
L | |
}; | |
enum Days { | |
Monday, | |
Tuesday, | |
Wednesday, | |
Thursday, | |
Friday, | |
Saturday, | |
Sunday | |
}; | |
Days bestDay() { | |
return Friday; | |
} | |
int trigger() { | |
Empty EmptyVal; | |
int emptytest = EmptyVal | B; | |
if (bestDay() | A) | |
return 1; | |
// CHECK-MESSAGES: :[[@LINE-2]]:17: warning: enum values are from different enum types | |
if (I | Y) | |
return 1; | |
// CHECK-MESSAGES: :[[@LINE-2]]:9: warning: enum values are from different enum types | |
} | |
int dont_trigger() { | |
unsigned p; | |
p = Q | P; | |
if (A + G == E) | |
return 1; | |
else if ((Q | R) == T) | |
return 1; | |
else | |
int k = T | Q; | |
Empty EmptyVal; | |
int emptytest = EmptyVal | B; | |
int a = 1, b = 5; | |
int c = a + b; | |
int d = c | H, e = b * a; | |
a = B | C; | |
b = X | Z; | |
if (Tuesday != Monday + 1 || | |
Friday - Thursday != 1 || | |
Sunday + Wednesday == (Sunday | Wednesday)) | |
return 1; | |
if (H + I + L == 42) | |
return 1; | |
return 42; | |
} | |
namespace PR34400 { | |
enum { E1 = 0 }; | |
enum { E2 = -1 }; | |
enum { l = E1 | E2 }; | |
} |