102 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			C
		
	
	
	
			
		
		
	
	
			102 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			C
		
	
	
	
// RUN: %clang_cc1 %s -fsyntax-only -verify -Wduplicate-enum
 | 
						|
// RUN: %clang_cc1 %s -x c++ -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'}}
 | 
						|
};
 |