diff options
| -rw-r--r-- | clang/lib/ARCMigrate/ObjCMT.cpp | 2 | ||||
| -rw-r--r-- | clang/test/ARCMT/objcmt-ns-macros.m | 20 | ||||
| -rw-r--r-- | clang/test/ARCMT/objcmt-ns-macros.m.result | 20 |
3 files changed, 41 insertions, 1 deletions
diff --git a/clang/lib/ARCMigrate/ObjCMT.cpp b/clang/lib/ARCMigrate/ObjCMT.cpp index c15b4107444..5d36fa7b8ab 100644 --- a/clang/lib/ARCMigrate/ObjCMT.cpp +++ b/clang/lib/ARCMigrate/ObjCMT.cpp @@ -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; diff --git a/clang/test/ARCMT/objcmt-ns-macros.m b/clang/test/ARCMT/objcmt-ns-macros.m index ccf666c1e0c..edc3ffd4043 100644 --- a/clang/test/ARCMT/objcmt-ns-macros.m +++ b/clang/test/ARCMT/objcmt-ns-macros.m @@ -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; diff --git a/clang/test/ARCMT/objcmt-ns-macros.m.result b/clang/test/ARCMT/objcmt-ns-macros.m.result index b94b31b8820..674de3e9168 100644 --- a/clang/test/ARCMT/objcmt-ns-macros.m.result +++ b/clang/test/ARCMT/objcmt-ns-macros.m.result @@ -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), +}; + + |

