// RUN: %clang_cc1 -verify %s

#define CF_ENUM(_type, _name) enum _name : _type _name; enum _name : _type
#define NS_ENUM(_type, _name) CF_ENUM(_type, _name)

#define NS_ERROR_ENUM(_type, _name, _domain)  \
  enum _name : _type _name; enum __attribute__((ns_error_domain(_domain))) _name : _type

typedef NS_ENUM(unsigned, MyEnum) {
  MyFirst,
  MySecond,
};

typedef NS_ENUM(invalidType, MyInvalidEnum) {
// expected-error@-1{{unknown type name 'invalidType'}}
// expected-error@-2{{unknown type name 'invalidType'}}
  MyFirstInvalid,
  MySecondInvalid,
};

const char *MyErrorDomain;
typedef NS_ERROR_ENUM(unsigned char, MyErrorEnum, MyErrorDomain) {
	MyErrFirst,
	MyErrSecond,
};
struct __attribute__((ns_error_domain(MyErrorDomain))) MyStructErrorDomain {};

typedef NS_ERROR_ENUM(unsigned char, MyErrorEnumInvalid, InvalidDomain) {
	// expected-error@-1{{domain argument 'InvalidDomain' not valid top-level declaration}}
	MyErrFirstInvalid,
	MyErrSecondInvalid,
};

typedef NS_ERROR_ENUM(unsigned char, MyErrorEnumInvalid, "domain-string");
  // expected-error@-1{{domain argument must be an identifier}}

int __attribute__((ns_error_domain(MyErrorDomain))) NotTagDecl;
  // expected-error@-1{{ns_error_domain attribute only valid on enum/struct/union/class}}

void foo() {}
typedef NS_ERROR_ENUM(unsigned char, MyErrorEnumInvalidFunction, foo);
  // expected-error@-1{{domain argument 'foo' not valid top-level declaration}}
