1// RUN: rm -rf %t 2// 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 3// RUN: c-arcmt-test -mt-migrate-directory %t | arcmt-test -verify-transformed-files %s.result 4// RUN: %clang_cc1 -triple x86_64-apple-darwin10 -fsyntax-only -x objective-c -fobjc-runtime-has-weak -fobjc-arc %s.result 5 6typedef signed char int8_t; 7typedef short int16_t; 8typedef int int32_t; 9typedef long NSInteger; 10typedef long long int64_t; 11 12typedef unsigned char uint8_t; 13typedef unsigned short uint16_t; 14typedef unsigned int uint32_t; 15typedef unsigned long NSUInteger; 16typedef unsigned long long uint64_t; 17 18#define NS_ENUM(_type, _name) enum _name : _type _name; enum _name : _type 19#define NS_OPTIONS(_type, _name) enum _name : _type _name; enum _name : _type 20#define DEPRECATED __attribute__((deprecated)) 21 22typedef NS_ENUM(NSInteger, wibble) { 23 blah, 24 blarg 25}; 26 27typedef NS_ENUM(NSUInteger, UITableViewCellStyle) { 28 UIViewAutoresizingNone = 0, 29 UIViewAutoresizingFlexibleLeftMargin, 30 UIViewAutoresizingFlexibleWidth, 31 UIViewAutoresizingFlexibleRightMargin, 32 UIViewAutoresizingFlexibleTopMargin, 33 UIViewAutoresizingFlexibleHeight, 34 UIViewAutoresizingFlexibleBottomMargin 35}; 36 37typedef NS_ENUM(unsigned int, UIViewAnimationTransition) { 38 UIViewAnimationTransitionNone, 39 UIViewAnimationTransitionFlipFromLeft, 40 UIViewAnimationTransitionFlipFromRight, 41 UIViewAnimationTransitionCurlUp, 42 UIViewAnimationTransitionCurlDown, 43}; 44 45typedef NS_OPTIONS(unsigned int, UITableView) { 46 UIViewOne = 0, 47 UIViewTwo = 1 << 0, 48 UIViewThree = 1 << 1, 49 UIViewFour = 1 << 2, 50 UIViewFive = 1 << 3, 51 UIViewSix = 1 << 4, 52 UIViewSeven = 1 << 5 53}; 54 55typedef NS_OPTIONS(NSUInteger, UI) { 56 UIOne = 0, 57 UITwo = 0x1, 58 UIthree = 0x8, 59 UIFour = 0x100 60}; 61 62typedef NS_OPTIONS(unsigned int, UIPOWER2) { 63 UIP2One = 0, 64 UIP2Two = 0x1, 65 UIP2three = 0x8, 66 UIP2Four = 0x100 67}; 68 69enum { 70 UNOne, 71 UNTwo 72}; 73 74// Should use NS_ENUM even though it is all power of 2. 75typedef NS_ENUM(NSInteger, UIK) { 76 UIKOne = 1, 77 UIKTwo = 2, 78}; 79 80typedef NS_ENUM(unsigned int, NSTickMarkPosition) { 81 NSTickMarkBelow = 0, 82 NSTickMarkAbove = 1, 83 NSTickMarkLeft = NSTickMarkAbove, 84 NSTickMarkRight = NSTickMarkBelow 85}; 86 87typedef NS_OPTIONS(NSUInteger, UITableStyle) { 88 UIViewNone = 0x0, 89 UIViewMargin = 0x1, 90 UIViewWidth = 0x2, 91 UIViewRightMargin = 0x3, 92 UIViewBottomMargin = 0xbadbeef 93}; 94 95typedef NS_OPTIONS(NSUInteger, UIStyle) { 96 UIView0 = 0, 97 UIView1 = 0XBADBEEF 98}; 99 100typedef NS_ENUM(NSUInteger, NSBitmapImageFileType) { 101 NSTIFFFileType, 102 NSBMPFileType, 103 NSGIFFileType, 104 NSJPEGFileType, 105 NSPNGFileType, 106 NSJPEG2000FileType 107}; 108 109typedef NS_ENUM(NSUInteger, NSAlertStyle) { 110 NSWarningAlertStyle = 0, 111 NSInformationalAlertStyle = 1, 112 NSCriticalAlertStyle = 2 113}; 114 115enum { 116 D_NSTIFFFileType, 117 D_NSBMPFileType, 118 D_NSGIFFileType, 119 D_NSJPEGFileType, 120 D_NSPNGFileType, 121 D_NSJPEG2000FileType 122}; 123typedef NSUInteger D_NSBitmapImageFileType DEPRECATED; 124 125typedef enum { 126 D_NSTickMarkBelow = 0, 127 D_NSTickMarkAbove = 1 128} D_NSTickMarkPosition DEPRECATED; 129 130 131#define NS_ENUM_AVAILABLE(X,Y) 132 133 134typedef NS_OPTIONS(NSUInteger, NSFOptions) { 135 NSFStrongMemory NS_ENUM_AVAILABLE(10_5, 6_0) = (0UL << 0), 136 NSFOpaqueMemory NS_ENUM_AVAILABLE(10_5, 6_0) = (2UL << 0), 137 NSFMallocMemory NS_ENUM_AVAILABLE(10_5, 6_0) = (3UL << 0), 138 NSFMachVirtualMemory NS_ENUM_AVAILABLE(10_5, 6_0) = (4UL << 0), 139 NSFWeakMemory NS_ENUM_AVAILABLE(10_8, 6_0) = (5UL << 0), 140 141 NSFObjectPersonality NS_ENUM_AVAILABLE(10_5, 6_0) = (0UL << 8), 142 NSFOpaquePersonality NS_ENUM_AVAILABLE(10_5, 6_0) = (1UL << 8), 143 NSFObjectPointerPersonality NS_ENUM_AVAILABLE(10_5, 6_0) = (2UL << 8), 144 NSFCStringPersonality NS_ENUM_AVAILABLE(10_5, 6_0) = (3UL << 8), 145 NSFStructPersonality NS_ENUM_AVAILABLE(10_5, 6_0) = (4UL << 8), 146 NSFIntegerPersonality NS_ENUM_AVAILABLE(10_5, 6_0) = (5UL << 8), 147 NSFCopyIn NS_ENUM_AVAILABLE(10_5, 6_0) = (1UL << 16), 148}; 149 150typedef NS_ENUM(unsigned int, UIP) { 151 UIP0One = 0, 152 UIP0Two = 1, 153 UIP0Three = 2, 154 UIP0Four = 10, 155 UIP0Last = 0x100 156}; 157 158typedef NS_OPTIONS(unsigned int, UIP_3) { 159 UIPZero = 0x0, 160 UIPOne = 0x1, 161 UIPTwo = 0x2, 162 UIP10 = 0x10, 163 UIPHundred = 0x100 164}; 165 166typedef NS_ENUM(unsigned int, UIP4_3) { 167 UIP4Zero = 0x0, 168 UIP4One = 0x1, 169 UIP4Two = 0x2, 170 UIP410 = 0x10, 171 UIP4Hundred = 100 172}; 173 174typedef NS_OPTIONS(unsigned int, UIP5_3) { 175 UIP5Zero = 0x0, 176 UIP5Two = 0x2, 177 UIP510 = 0x3, 178 UIP5Hundred = 0x4 179}; 180 181typedef NS_ENUM(unsigned int, UIP6_3) { 182 UIP6Zero = 0x0, 183 UIP6One = 0x1, 184 UIP6Two = 0x2, 185 UIP610 = 10, 186 UIP6Hundred = 0x100 187}; 188 189typedef NS_ENUM(unsigned int, UIP7_3) { 190 UIP7Zero = 0x0, 191 UIP7One = 1, 192 UIP7Two = 0x2, 193 UIP710 = 10, 194 UIP7Hundred = 100 195}; 196 197 198typedef NS_ENUM(unsigned int, UIP8_3) { 199 Random = 0, 200 Random1 = 2, 201 Random2 = 4, 202 Random3 = 0x12345, 203 Random4 = 0x3444444, 204 Random5 = 0xbadbeef, 205 Random6 206}; 207 208// rdar://15200602 209#define NS_AVAILABLE_MAC(X) __attribute__((availability(macosx,introduced=X))) 210#define NS_ENUM_AVAILABLE_MAC(X) __attribute__((availability(macosx,introduced=X))) 211 212typedef NS_ENUM(NSInteger, NSModalResponse) { 213 NSModalResponseStop = (-1000), // Also used as the default response for sheets 214 NSModalResponseAbort = (-1001), 215 NSModalResponseContinue = (-1002), 216} NS_ENUM_AVAILABLE_MAC(10.9); 217 218// rdar://15201056 219typedef NSUInteger FarFarAwayOptions; 220 221// rdar://15200915 222typedef NS_OPTIONS(NSUInteger, FarAwayOptions) { 223 FarAway1 = 1 << 1, 224 FarAway2 = 1 << 2 225}; 226typedef NS_OPTIONS(NSUInteger, NSWorkspaceLaunchOptions) { 227 NSWorkspaceLaunchAndPrint = 0x00000002, 228 NSWorkspaceLaunchWithErrorPresentation = 0x00000040, 229 NSWorkspaceLaunchInhibitingBackgroundOnly = 0x00000080, 230 NSWorkspaceLaunchWithoutAddingToRecents = 0x00000100, 231 NSWorkspaceLaunchWithoutActivation = 0x00000200, 232 NSWorkspaceLaunchAsync = 0x00010000, 233 NSWorkspaceLaunchAllowingClassicStartup = 0x00020000, 234 NSWorkspaceLaunchPreferringClassic = 0x00040000, 235 NSWorkspaceLaunchNewInstance = 0x00080000, 236 NSWorkspaceLaunchAndHide = 0x00100000, 237 NSWorkspaceLaunchAndHideOthers = 0x00200000, 238 NSWorkspaceLaunchDefault = NSWorkspaceLaunchAsync | 239 NSWorkspaceLaunchAllowingClassicStartup 240}; 241 242typedef NS_OPTIONS(NSUInteger, NSExcludeOptions) { 243 NSExcludeQuickDrawElementsIconCreationOption = 1 << 1, 244 NSExclude10_4ElementsIconCreationOption = 1 << 2 245}; 246 247typedef NS_OPTIONS(NSUInteger, NSExcludeCreationOption) { 248 NSExcludeQuickDrawElementsCreationOption = 1 << 1, 249 NSExclude10_4ElementsCreationOption = 1 << 2 250}; 251 252 253typedef NS_OPTIONS(NSUInteger, NSExcludeIconOptions) { 254 NSExcludeQuickDrawElementsIconOption = 1 << 1, 255 NSExclude10_4ElementsIconOption = 1 << 2 256}; 257 258@interface INTF { 259 NSExcludeIconOptions I1; 260 NSExcludeIconOptions I2; 261} 262@end 263 264enum { 265 FarFarAway1 = 1 << 1, 266 FarFarAway2 = 1 << 2 267}; 268 269// rdar://15200915 270typedef NS_OPTIONS(NSUInteger, NSWindowOcclusionState) { 271 NSWindowOcclusionStateVisible = 1UL << 1, 272}; 273 274typedef NS_ENUM(NSUInteger, NSWindowNumberListOptions) { 275 NSWindowCloseButton, 276 NSWindowMiniaturizeButton, 277 NSWindowZoomButton, 278 NSWindowToolbarButton, 279 NSWindowDocumentIconButton 280}; 281 282typedef NS_ENUM(NSUInteger, NSSelectionDirection) { 283 NSDirectSelection = 0, 284 NSSelectingNext, 285 NSSelectingPrevious 286}; 287 288// standard window buttons 289 290// rdar://18262255 291typedef NS_ENUM(NSUInteger, Thing) { 292 ThingOne, 293 ThingTwo, 294 ThingThree, 295}; 296 297// rdar://18498539 298typedef NS_ENUM(unsigned int, NumericEnum) { 299 one = 1 300}; 301 302typedef NS_ENUM(unsigned int, NumericEnum2) { 303 Two = 2 304}; 305 306typedef NS_ENUM(unsigned int, NumericEnum3) { 307 Three = 3 308}; 309 310typedef NS_OPTIONS(unsigned int, NumericEnum4) { 311 Four = 4 312}; 313 314// rdar://18532199 315typedef NS_ENUM(int8_t, MyEnumeratedType) 316{ 317 UI8one = 1 318}; 319 320 321typedef NS_OPTIONS(uint16_t, UI16) { 322 UI16One = 0, 323 UI16Two = 0x1, 324 UI16three = 0x8, 325 UI16Four = 0x100 326}; 327 328typedef NS_ENUM(uint32_t, UI32TableViewCellStyle) { 329 UI32ViewAutoresizingNone = 0, 330 UI32ViewAutoresizingFlexibleLeftMargin, 331 UI32ViewAutoresizingFlexibleWidth, 332 UI32ViewAutoresizingFlexibleRightMargin, 333 UI32ViewAutoresizingFlexibleTopMargin, 334 UI32ViewAutoresizingFlexibleHeight, 335 UI32ViewAutoresizingFlexibleBottomMargin 336}; 337 338typedef NS_ENUM(uint8_t, UI8Type) 339{ 340 UIU8one = 1 341}; 342 343// rdar://19352510 344typedef NS_ENUM(NSInteger, MyEnum) {zero}; 345 346typedef NS_ENUM(NSUInteger, MyEnumNSUInteger) {two}; 347 348typedef NS_ENUM(int, MyEnumint) {three, four}; 349 350typedef NS_ENUM(unsigned long, MyEnumlonglong) {five}; 351 352typedef NS_ENUM(unsigned long long, MyEnumunsignedlonglong) { 353 ll1, 354 ll2= 0xff, 355 ll3, 356 ll4 357}; 358 359// rdar://19994496 360typedef NS_ENUM(int8_t, MyOneEnum) {int8_one}; 361 362typedef NS_ENUM(int16_t, Myint16_tEnum) { 363 int16_t_one, 364 int16_t_two }; 365