// Matching
enum E1 {
  E1Enumerator1,
  E1Enumerator2 = 3,
  E1Enumerator3
} x1;

// Value mismatch
enum E2 {
  E2Enumerator1,
  E2Enumerator2 = 3,
  E2Enumerator3
} x2;

// Name mismatch
enum E3 {
  E3Enumerator1,
  E3Enumerator2 = 3,
  E3Enumerator3
} x3;

// Missing enumerator
enum E4 {
  E4Enumerator1,
  E4Enumerator2,
  E4Enumerator3
} x4;

// Extra enumerator
enum E5 {
  E5Enumerator1,
  E5Enumerator2,
  E5Enumerator3
} x5;

// Matching, with typedef
typedef enum {
  E6Enumerator1,
  E6Enumerator2
} E6;

E6 x6;
