brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.3 KiB · de7eb98 Raw
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