diff options
| author | Fariborz Jahanian <fjahanian@apple.com> | 2013-09-23 20:27:06 +0000 |
|---|---|---|
| committer | Fariborz Jahanian <fjahanian@apple.com> | 2013-09-23 20:27:06 +0000 |
| commit | 02bdb16524b952ae4ef459e066e29ee2232670df (patch) | |
| tree | a4e72c63b7f5a10e692ce5604237888bec9cce93 /clang/lib | |
| parent | 724d75b2c8fe6bb4917c5c4acf011750df41e9e8 (diff) | |
| download | bcm5719-llvm-02bdb16524b952ae4ef459e066e29ee2232670df.tar.gz bcm5719-llvm-02bdb16524b952ae4ef459e066e29ee2232670df.zip | |
ObjectiveC migrator: Infer NS_OPTIONS when if there is at
least one hex enumerator, all others are also
hex enumerator (0 enumerator is excepted).
// rdar://15044304
llvm-svn: 191222
Diffstat (limited to 'clang/lib')
| -rw-r--r-- | clang/lib/ARCMigrate/ObjCMT.cpp | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/clang/lib/ARCMigrate/ObjCMT.cpp b/clang/lib/ARCMigrate/ObjCMT.cpp index cffa625d3bd..c29a2de46b5 100644 --- a/clang/lib/ARCMigrate/ObjCMT.cpp +++ b/clang/lib/ARCMigrate/ObjCMT.cpp @@ -498,7 +498,7 @@ static bool rewriteToNSMacroDecl(const EnumDecl *EnumDcl, static bool UseNSOptionsMacro(Preprocessor &PP, ASTContext &Ctx, const EnumDecl *EnumDcl) { bool PowerOfTwo = true; - bool FoundHexdecimalEnumerator = false; + bool AllHexdecimalEnumerator = true; uint64_t MaxPowerOfTwoVal = 0; for (EnumDecl::enumerator_iterator EI = EnumDcl->enumerator_begin(), EE = EnumDcl->enumerator_end(); EI != EE; ++EI) { @@ -506,6 +506,7 @@ static bool UseNSOptionsMacro(Preprocessor &PP, ASTContext &Ctx, const Expr *InitExpr = Enumerator->getInitExpr(); if (!InitExpr) { PowerOfTwo = false; + AllHexdecimalEnumerator = false; continue; } InitExpr = InitExpr->IgnoreParenCasts(); @@ -520,7 +521,8 @@ static bool UseNSOptionsMacro(Preprocessor &PP, ASTContext &Ctx, else if (EnumVal > MaxPowerOfTwoVal) MaxPowerOfTwoVal = EnumVal; } - if (!FoundHexdecimalEnumerator) { + if (AllHexdecimalEnumerator && EnumVal) { + bool FoundHexdecimalEnumerator = false; SourceLocation EndLoc = Enumerator->getLocEnd(); Token Tok; if (!PP.getRawToken(EndLoc, Tok, /*IgnoreWhiteSpace=*/true)) @@ -529,9 +531,11 @@ static bool UseNSOptionsMacro(Preprocessor &PP, ASTContext &Ctx, FoundHexdecimalEnumerator = (StringLit[0] == '0' && (toLowercase(StringLit[1]) == 'x')); } + if (!FoundHexdecimalEnumerator) + AllHexdecimalEnumerator = false; } } - return FoundHexdecimalEnumerator || (PowerOfTwo && (MaxPowerOfTwoVal > 2)); + return AllHexdecimalEnumerator || (PowerOfTwo && (MaxPowerOfTwoVal > 2)); } void ObjCMigrateASTConsumer::migrateProtocolConformance(ASTContext &Ctx, |

