diff options
Diffstat (limited to 'clang-tools-extra/test/clang-tidy/misc-suspicious-enum-usage.cpp')
-rw-r--r-- | clang-tools-extra/test/clang-tidy/misc-suspicious-enum-usage.cpp | 90 |
1 files changed, 90 insertions, 0 deletions
diff --git a/clang-tools-extra/test/clang-tidy/misc-suspicious-enum-usage.cpp b/clang-tools-extra/test/clang-tidy/misc-suspicious-enum-usage.cpp new file mode 100644 index 00000000000..27e78f5c73e --- /dev/null +++ b/clang-tools-extra/test/clang-tidy/misc-suspicious-enum-usage.cpp @@ -0,0 +1,90 @@ +// RUN: %check_clang_tidy %s misc-suspicious-enum-usage %t -- -config="{CheckOptions: [{key: misc-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; +} |