]> granicus.if.org Git - clang/commitdiff
ObjectiveC migrator. infer NS_OPTIONS correctly in the
authorFariborz Jahanian <fjahanian@apple.com>
Tue, 17 Sep 2013 23:32:51 +0000 (23:32 +0000)
committerFariborz Jahanian <fjahanian@apple.com>
Tue, 17 Sep 2013 23:32:51 +0000 (23:32 +0000)
presense of parenthesized enumerator initializers.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@190901 91177308-0d34-0410-b5e6-96231b3b80d8

lib/ARCMigrate/ObjCMT.cpp
test/ARCMT/objcmt-ns-macros.m
test/ARCMT/objcmt-ns-macros.m.result

index c15b4107444891ac90c34f2e22d73ec154ea10a5..5d36fa7b8ab20bb98f1309ea2c317702752529a6 100644 (file)
@@ -508,7 +508,7 @@ static bool UseNSOptionsMacro(Preprocessor &PP, ASTContext &Ctx,
       PowerOfTwo = false;
       continue;
     }
-    InitExpr = InitExpr->IgnoreImpCasts();
+    InitExpr = InitExpr->IgnoreParenCasts();
     if (const BinaryOperator *BO = dyn_cast<BinaryOperator>(InitExpr))
       if (BO->isShiftOp() || BO->isBitwiseOp())
         return true;
index ccf666c1e0c1857521815ed3d3fe8f9f10c8936d..edc3ffd40439a75b8a73e0971d12bf60fe7539fe 100644 (file)
@@ -126,3 +126,23 @@ typedef enum  {
     D_NSTickMarkAbove = 1
 } D_NSTickMarkPosition DEPRECATED;
 
+
+#define NS_ENUM_AVAILABLE(X,Y)
+
+enum {
+    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 NSUInteger NSFOptions;
index b94b31b88203ddc6a4df2a8deb3b6edc39334746..674de3e9168d11074b5f8170463cebb3677ca183 100644 (file)
@@ -126,3 +126,23 @@ typedef enum  {
     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),      
+};
+
+