From: Argyrios Kyrtzidis Date: Tue, 15 May 2012 22:59:54 +0000 (+0000) Subject: [objcmt] When using NSNumber numberWithInteger:/numberWithUnsignedInteger: be X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=c5d33e959b45987bb97a7fcf639cdf5ce55987ed;p=clang [objcmt] When using NSNumber numberWithInteger:/numberWithUnsignedInteger: be more liberal in rewriting when the parameter is an enum constant. Part of rdar://11438360 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@156873 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/Edit/RewriteObjCFoundationAPI.cpp b/lib/Edit/RewriteObjCFoundationAPI.cpp index 38584d65ef..5f7bef6f54 100644 --- a/lib/Edit/RewriteObjCFoundationAPI.cpp +++ b/lib/Edit/RewriteObjCFoundationAPI.cpp @@ -684,6 +684,14 @@ static void objectifyExpr(const Expr *E, Commit &commit) { // rewriteToNumericBoxedExpression. //===----------------------------------------------------------------------===// +static bool isEnumConstant(const Expr *E) { + if (const DeclRefExpr *DRE = dyn_cast(E->IgnoreParenImpCasts())) + if (const ValueDecl *VD = DRE->getDecl()) + return isa(VD); + + return false; +} + static bool rewriteToNumericBoxedExpression(const ObjCMessageExpr *Msg, const NSAPI &NS, Commit &commit) { if (Msg->getNumArgs() != 1) @@ -725,7 +733,7 @@ static bool rewriteToNumericBoxedExpression(const ObjCMessageExpr *Msg, if ((MK == NSAPI::NSNumberWithInteger || MK == NSAPI::NSNumberWithUnsignedInteger) && !isTruncated) { - if (OrigTy->getAs()) + if (OrigTy->getAs() || isEnumConstant(OrigArg)) break; if ((MK==NSAPI::NSNumberWithInteger) == OrigTy->isSignedIntegerType() && OrigTySize >= Ctx.getTypeSize(Ctx.IntTy))