97 lines · cpp
1// RUN: %check_clang_tidy -std=c++17 %s bugprone-suspicious-enum-usage %t -- -config="{CheckOptions: {bugprone-suspicious-enum-usage.StrictMode: false}}"2 3enum Empty {4};5 6enum A {7 A = 1,8 B = 2,9 C = 4,10 D = 8,11 E = 16,12 F = 32,13 G = 6314};15 16enum X {17 X = 8,18 Y = 16,19 Z = 420};21 22enum {23 P = 2,24 Q = 3,25 R = 4,26 S = 8,27 T = 1628};29 30enum {31 H,32 I,33 J,34 K,35 L36};37 38enum Days {39 Monday,40 Tuesday,41 Wednesday,42 Thursday,43 Friday,44 Saturday,45 Sunday46};47 48Days bestDay() {49 return Friday;50}51 52int trigger() {53 Empty EmptyVal;54 int emptytest = EmptyVal | B;55 if (bestDay() | A)56 return 1;57 // CHECK-NOTES: :[[@LINE-2]]:17: warning: enum values are from different enum types58 if (I | Y)59 return 1;60 // CHECK-NOTES: :[[@LINE-2]]:9: warning: enum values are from different enum types61}62 63int dont_trigger() {64 unsigned p;65 p = Q | P;66 67 if (A + G == E)68 return 1;69 else if ((Q | R) == T)70 return 1;71 else72 int k = T | Q;73 74 Empty EmptyVal;75 int emptytest = EmptyVal | B;76 77 int a = 1, b = 5;78 int c = a + b;79 int d = c | H, e = b * a;80 a = B | C;81 b = X | Z;82 83 if (Tuesday != Monday + 1 ||84 Friday - Thursday != 1 ||85 Sunday + Wednesday == (Sunday | Wednesday))86 return 1;87 if (H + I + L == 42)88 return 1;89 return 42;90}91 92namespace PR34400 {93enum { E1 = 0 };94enum { E2 = -1 };95enum { l = E1 | E2 };96}97