forked from OSchip/llvm-project
				
			
		
			
				
	
	
		
			97 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			C++
		
	
	
	
			
		
		
	
	
			97 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			C++
		
	
	
	
// 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-NOTES: :[[@LINE-2]]:17: warning: enum values are from different enum types
 | 
						|
  if (I | Y)
 | 
						|
    return 1;
 | 
						|
  // CHECK-NOTES: :[[@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 };
 | 
						|
}
 |