// RUN: rm -rf %t // RUN: %clang_cc1 -objcmt-migrate-ns-macros -mt-migrate-directory %t %s -x objective-c -fobjc-runtime-has-weak -fobjc-arc -triple x86_64-apple-darwin11 // RUN: c-arcmt-test -mt-migrate-directory %t | arcmt-test -verify-transformed-files %s.result // RUN: %clang_cc1 -triple x86_64-apple-darwin10 -fsyntax-only -x objective-c -fobjc-runtime-has-weak -fobjc-arc %s.result typedef signed char int8_t; typedef short int16_t; typedef int int32_t; typedef long NSInteger; typedef long long int64_t; typedef unsigned char uint8_t; typedef unsigned short uint16_t; typedef unsigned int uint32_t; typedef unsigned long NSUInteger; typedef unsigned long long uint64_t; #define NS_ENUM(_type, _name) enum _name : _type _name; enum _name : _type #define NS_OPTIONS(_type, _name) enum _name : _type _name; enum _name : _type #define DEPRECATED __attribute__((deprecated)) typedef NS_ENUM(NSInteger, wibble) { blah, blarg }; typedef NS_ENUM(NSUInteger, UITableViewCellStyle) { UIViewAutoresizingNone = 0, UIViewAutoresizingFlexibleLeftMargin, UIViewAutoresizingFlexibleWidth, UIViewAutoresizingFlexibleRightMargin, UIViewAutoresizingFlexibleTopMargin, UIViewAutoresizingFlexibleHeight, UIViewAutoresizingFlexibleBottomMargin }; typedef NS_ENUM(unsigned int, UIViewAnimationTransition) { UIViewAnimationTransitionNone, UIViewAnimationTransitionFlipFromLeft, UIViewAnimationTransitionFlipFromRight, UIViewAnimationTransitionCurlUp, UIViewAnimationTransitionCurlDown, }; typedef NS_OPTIONS(unsigned int, UITableView) { UIViewOne = 0, UIViewTwo = 1 << 0, UIViewThree = 1 << 1, UIViewFour = 1 << 2, UIViewFive = 1 << 3, UIViewSix = 1 << 4, UIViewSeven = 1 << 5 }; typedef NS_OPTIONS(NSUInteger, UI) { UIOne = 0, UITwo = 0x1, UIthree = 0x8, UIFour = 0x100 }; typedef NS_OPTIONS(unsigned int, UIPOWER2) { UIP2One = 0, UIP2Two = 0x1, UIP2three = 0x8, UIP2Four = 0x100 }; enum { UNOne, UNTwo }; // Should use NS_ENUM even though it is all power of 2. typedef NS_ENUM(NSInteger, UIK) { UIKOne = 1, UIKTwo = 2, }; typedef NS_ENUM(unsigned int, NSTickMarkPosition) { NSTickMarkBelow = 0, NSTickMarkAbove = 1, NSTickMarkLeft = NSTickMarkAbove, NSTickMarkRight = NSTickMarkBelow }; typedef NS_OPTIONS(NSUInteger, UITableStyle) { UIViewNone = 0x0, UIViewMargin = 0x1, UIViewWidth = 0x2, UIViewRightMargin = 0x3, UIViewBottomMargin = 0xbadbeef }; typedef NS_OPTIONS(NSUInteger, UIStyle) { UIView0 = 0, UIView1 = 0XBADBEEF }; typedef NS_ENUM(NSUInteger, NSBitmapImageFileType) { NSTIFFFileType, NSBMPFileType, NSGIFFileType, NSJPEGFileType, NSPNGFileType, NSJPEG2000FileType }; typedef NS_ENUM(NSUInteger, NSAlertStyle) { NSWarningAlertStyle = 0, NSInformationalAlertStyle = 1, NSCriticalAlertStyle = 2 }; enum { D_NSTIFFFileType, D_NSBMPFileType, D_NSGIFFileType, D_NSJPEGFileType, D_NSPNGFileType, D_NSJPEG2000FileType }; typedef NSUInteger D_NSBitmapImageFileType DEPRECATED; typedef enum { D_NSTickMarkBelow = 0, D_NSTickMarkAbove = 1 } D_NSTickMarkPosition DEPRECATED; #define NS_ENUM_AVAILABLE(X,Y) typedef NS_OPTIONS(NSUInteger, NSFOptions) { NSFStrongMemory NS_ENUM_AVAILABLE(10_5, 6_0) = (0UL << 0), NSFOpaqueMemory NS_ENUM_AVAILABLE(10_5, 6_0) = (2UL << 0), NSFMallocMemory NS_ENUM_AVAILABLE(10_5, 6_0) = (3UL << 0), NSFMachVirtualMemory NS_ENUM_AVAILABLE(10_5, 6_0) = (4UL << 0), NSFWeakMemory NS_ENUM_AVAILABLE(10_8, 6_0) = (5UL << 0), NSFObjectPersonality NS_ENUM_AVAILABLE(10_5, 6_0) = (0UL << 8), NSFOpaquePersonality NS_ENUM_AVAILABLE(10_5, 6_0) = (1UL << 8), NSFObjectPointerPersonality NS_ENUM_AVAILABLE(10_5, 6_0) = (2UL << 8), NSFCStringPersonality NS_ENUM_AVAILABLE(10_5, 6_0) = (3UL << 8), NSFStructPersonality NS_ENUM_AVAILABLE(10_5, 6_0) = (4UL << 8), NSFIntegerPersonality NS_ENUM_AVAILABLE(10_5, 6_0) = (5UL << 8), NSFCopyIn NS_ENUM_AVAILABLE(10_5, 6_0) = (1UL << 16), }; typedef NS_ENUM(unsigned int, UIP) { UIP0One = 0, UIP0Two = 1, UIP0Three = 2, UIP0Four = 10, UIP0Last = 0x100 }; typedef NS_OPTIONS(unsigned int, UIP_3) { UIPZero = 0x0, UIPOne = 0x1, UIPTwo = 0x2, UIP10 = 0x10, UIPHundred = 0x100 }; typedef NS_ENUM(unsigned int, UIP4_3) { UIP4Zero = 0x0, UIP4One = 0x1, UIP4Two = 0x2, UIP410 = 0x10, UIP4Hundred = 100 }; typedef NS_OPTIONS(unsigned int, UIP5_3) { UIP5Zero = 0x0, UIP5Two = 0x2, UIP510 = 0x3, UIP5Hundred = 0x4 }; typedef NS_ENUM(unsigned int, UIP6_3) { UIP6Zero = 0x0, UIP6One = 0x1, UIP6Two = 0x2, UIP610 = 10, UIP6Hundred = 0x100 }; typedef NS_ENUM(unsigned int, UIP7_3) { UIP7Zero = 0x0, UIP7One = 1, UIP7Two = 0x2, UIP710 = 10, UIP7Hundred = 100 }; typedef NS_ENUM(unsigned int, UIP8_3) { Random = 0, Random1 = 2, Random2 = 4, Random3 = 0x12345, Random4 = 0x3444444, Random5 = 0xbadbeef, Random6 }; // rdar://15200602 #define NS_AVAILABLE_MAC(X) __attribute__((availability(macosx,introduced=X))) #define NS_ENUM_AVAILABLE_MAC(X) __attribute__((availability(macosx,introduced=X))) typedef NS_ENUM(NSInteger, NSModalResponse) { NSModalResponseStop = (-1000), // Also used as the default response for sheets NSModalResponseAbort = (-1001), NSModalResponseContinue = (-1002), } NS_ENUM_AVAILABLE_MAC(10.9); // rdar://15201056 typedef NSUInteger FarFarAwayOptions; // rdar://15200915 typedef NS_OPTIONS(NSUInteger, FarAwayOptions) { FarAway1 = 1 << 1, FarAway2 = 1 << 2 }; typedef NS_OPTIONS(NSUInteger, NSWorkspaceLaunchOptions) { NSWorkspaceLaunchAndPrint = 0x00000002, NSWorkspaceLaunchWithErrorPresentation = 0x00000040, NSWorkspaceLaunchInhibitingBackgroundOnly = 0x00000080, NSWorkspaceLaunchWithoutAddingToRecents = 0x00000100, NSWorkspaceLaunchWithoutActivation = 0x00000200, NSWorkspaceLaunchAsync = 0x00010000, NSWorkspaceLaunchAllowingClassicStartup = 0x00020000, NSWorkspaceLaunchPreferringClassic = 0x00040000, NSWorkspaceLaunchNewInstance = 0x00080000, NSWorkspaceLaunchAndHide = 0x00100000, NSWorkspaceLaunchAndHideOthers = 0x00200000, NSWorkspaceLaunchDefault = NSWorkspaceLaunchAsync | NSWorkspaceLaunchAllowingClassicStartup }; typedef NS_OPTIONS(NSUInteger, NSExcludeOptions) { NSExcludeQuickDrawElementsIconCreationOption = 1 << 1, NSExclude10_4ElementsIconCreationOption = 1 << 2 }; typedef NS_OPTIONS(NSUInteger, NSExcludeCreationOption) { NSExcludeQuickDrawElementsCreationOption = 1 << 1, NSExclude10_4ElementsCreationOption = 1 << 2 }; typedef NS_OPTIONS(NSUInteger, NSExcludeIconOptions) { NSExcludeQuickDrawElementsIconOption = 1 << 1, NSExclude10_4ElementsIconOption = 1 << 2 }; @interface INTF { NSExcludeIconOptions I1; NSExcludeIconOptions I2; } @end enum { FarFarAway1 = 1 << 1, FarFarAway2 = 1 << 2 }; // rdar://15200915 typedef NS_OPTIONS(NSUInteger, NSWindowOcclusionState) { NSWindowOcclusionStateVisible = 1UL << 1, }; typedef NS_ENUM(NSUInteger, NSWindowNumberListOptions) { NSWindowCloseButton, NSWindowMiniaturizeButton, NSWindowZoomButton, NSWindowToolbarButton, NSWindowDocumentIconButton }; typedef NS_ENUM(NSUInteger, NSSelectionDirection) { NSDirectSelection = 0, NSSelectingNext, NSSelectingPrevious }; // standard window buttons // rdar://18262255 typedef NS_ENUM(NSUInteger, Thing) { ThingOne, ThingTwo, ThingThree, }; // rdar://18498539 typedef NS_ENUM(unsigned int, NumericEnum) { one = 1 }; typedef NS_ENUM(unsigned int, NumericEnum2) { Two = 2 }; typedef NS_ENUM(unsigned int, NumericEnum3) { Three = 3 }; typedef NS_OPTIONS(unsigned int, NumericEnum4) { Four = 4 }; // rdar://18532199 typedef NS_ENUM(int8_t, MyEnumeratedType) { UI8one = 1 }; typedef NS_OPTIONS(uint16_t, UI16) { UI16One = 0, UI16Two = 0x1, UI16three = 0x8, UI16Four = 0x100 }; typedef NS_ENUM(uint32_t, UI32TableViewCellStyle) { UI32ViewAutoresizingNone = 0, UI32ViewAutoresizingFlexibleLeftMargin, UI32ViewAutoresizingFlexibleWidth, UI32ViewAutoresizingFlexibleRightMargin, UI32ViewAutoresizingFlexibleTopMargin, UI32ViewAutoresizingFlexibleHeight, UI32ViewAutoresizingFlexibleBottomMargin }; typedef NS_ENUM(uint8_t, UI8Type) { UIU8one = 1 }; // rdar://19352510 typedef NS_ENUM(NSInteger, MyEnum) {zero}; typedef NS_ENUM(NSUInteger, MyEnumNSUInteger) {two}; typedef NS_ENUM(int, MyEnumint) {three, four}; typedef NS_ENUM(unsigned long, MyEnumlonglong) {five}; typedef NS_ENUM(unsigned long long, MyEnumunsignedlonglong) { ll1, ll2= 0xff, ll3, ll4 }; // rdar://19994496 typedef NS_ENUM(int8_t, MyOneEnum) {int8_one}; typedef NS_ENUM(int16_t, Myint16_tEnum) { int16_t_one, int16_t_two };