forked from OSchip/llvm-project
				
			
		
			
				
	
	
		
			110 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			C
		
	
	
	
			
		
		
	
	
			110 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			C
		
	
	
	
// RUN: %clang_cc1 %s -fsyntax-only -verify -Wduplicate-enum
 | 
						|
// RUN: %clang_cc1 -triple x86_64-apple-darwin %s -x c++ -DCPP -fsyntax-only -verify -Wduplicate-enum
 | 
						|
enum A {
 | 
						|
  A1 = 0,  // expected-note {{element 'A1' also has value 0}}
 | 
						|
  A2 = -1,
 | 
						|
  A3,  // expected-warning {{element 'A3' has been implicitly assigned 0 which another element has been assigned}}
 | 
						|
  A4};
 | 
						|
 | 
						|
enum B {
 | 
						|
  B1 = -1,  // expected-note {{element 'B1' also has value -1}}
 | 
						|
  B2,       // expected-warning {{element 'B2' has been implicitly assigned 0 which another element has been assigned}}
 | 
						|
  B3,
 | 
						|
  B4 = -2,
 | 
						|
  B5,  // expected-warning {{element 'B5' has been implicitly assigned -1 which another element has been assigned}}
 | 
						|
  B6   // expected-note {{element 'B6' also has value 0}}
 | 
						|
};
 | 
						|
 | 
						|
enum C { C1, C2 = -1, C3 }; // expected-warning{{element 'C1' has been implicitly assigned 0 which another element has been assigned}} \
 | 
						|
  // expected-note {{element 'C3' also has value 0}}
 | 
						|
 | 
						|
enum D {
 | 
						|
  D1,
 | 
						|
  D2,
 | 
						|
  D3,  // expected-warning{{element 'D3' has been implicitly assigned 2 which another element has been assigned}}
 | 
						|
  D4 = D2,  // no warning
 | 
						|
  D5 = 2  // expected-note {{element 'D5' also has value 2}}
 | 
						|
};
 | 
						|
 | 
						|
enum E {
 | 
						|
  E1,
 | 
						|
  E2 = E1,
 | 
						|
  E3 = E2
 | 
						|
};
 | 
						|
 | 
						|
enum F {
 | 
						|
  F1,
 | 
						|
  F2,
 | 
						|
  FCount,
 | 
						|
  FMax = FCount - 1
 | 
						|
};
 | 
						|
 | 
						|
enum G {
 | 
						|
  G1,
 | 
						|
  G2,
 | 
						|
  GMax = G2,
 | 
						|
  GCount = GMax + 1
 | 
						|
};
 | 
						|
 | 
						|
enum {
 | 
						|
  H1 = 0,
 | 
						|
  H2 = -1,
 | 
						|
  H3,
 | 
						|
  H4};
 | 
						|
 | 
						|
enum {
 | 
						|
  I1 = -1,
 | 
						|
  I2,
 | 
						|
  I3,
 | 
						|
  I4 = -2,
 | 
						|
  I5,
 | 
						|
  I6
 | 
						|
};
 | 
						|
 | 
						|
enum { J1, J2 = -1, J3 };
 | 
						|
 | 
						|
enum { 
 | 
						|
  K1, 
 | 
						|
  K2, 
 | 
						|
  K3,
 | 
						|
  K4 = K2,
 | 
						|
  K5 = 2
 | 
						|
};
 | 
						|
 | 
						|
enum {
 | 
						|
  L1,
 | 
						|
  L2 = L1,
 | 
						|
  L3 = L2
 | 
						|
};
 | 
						|
 | 
						|
enum {
 | 
						|
  M1,
 | 
						|
  M2,
 | 
						|
  MCount,
 | 
						|
  MMax = MCount - 1
 | 
						|
};
 | 
						|
 | 
						|
enum {
 | 
						|
  N1,
 | 
						|
  N2,
 | 
						|
  NMax = N2,
 | 
						|
  NCount = NMax + 1
 | 
						|
};
 | 
						|
 | 
						|
// PR15693
 | 
						|
enum enum1 {
 | 
						|
  VALUE // expected-note{{previous definition is here}}
 | 
						|
};
 | 
						|
 | 
						|
enum enum2 {
 | 
						|
  VALUE // expected-error{{redefinition of enumerator 'VALUE'}}
 | 
						|
};
 | 
						|
 | 
						|
// rdar://44774672
 | 
						|
#ifdef CPP
 | 
						|
enum BigEnumerators : long {
 | 
						|
  e1,
 | 
						|
  e2 = __LONG_MAX__,
 | 
						|
};
 | 
						|
#endif
 |