blob: b7d0f2271a9405e600c429236335614d1446c4fa [file] [log] [blame]
#define MY_ENUM(_name) \
enum _name _name; \
enum __attribute__((enum_extensibility(open))) _name
#define MY_EXHAUSTIVE_ENUM(_name) \
enum _name _name; \
enum __attribute__((enum_extensibility(closed))) _name
typedef MY_ENUM(RegularEnum) {
RegularEnumA,
RegularEnumB
};
typedef MY_EXHAUSTIVE_ENUM(ExhaustiveEnum) {
ExhaustiveEnumA,
ExhaustiveEnumB
};
typedef MY_ENUM(RegularEnumTurnedExhaustive) {
RegularEnumTurnedExhaustiveA,
RegularEnumTurnedExhaustiveB
} __attribute__((enum_extensibility(closed)));
enum AnotherRegularEnumTurnedExhaustive {
AnotherRegularEnumTurnedExhaustiveA,
AnotherRegularEnumTurnedExhaustiveB
} __attribute__((enum_extensibility(open))) __attribute__((enum_extensibility(closed)));
typedef MY_ENUM(RegularEnumTurnedExhaustiveThenBackViaAPINotes) {
RegularEnumTurnedExhaustiveThenBackViaAPINotesA,
RegularEnumTurnedExhaustiveThenBackViaAPINotesB
} __attribute__((enum_extensibility(closed)));
typedef MY_ENUM(ForwardDeclaredTurnedExhaustive);
enum ForwardDeclaredTurnedExhaustive {
ForwardDeclaredTurnedExhaustiveA,
ForwardDeclaredTurnedExhaustiveB
} __attribute__((enum_extensibility(closed)));
enum __attribute__((enum_extensibility(open))) ForwardDeclaredOnly;
enum __attribute__((enum_extensibility(closed))) ForwardDeclaredOnly;
enum ForwardDeclaredOnly {
ForwardDeclaredOnlyA,
ForwardDeclaredOnlyB
};
enum __attribute__((enum_extensibility(closed))) UnavailableCases {
UnavailableCasesA,
UnavailableCasesB,
UnavailableCasesThisIsTheUnavailableOne __attribute__((availability(swift, unavailable)))
};