From cebe722ef64e906dff932bd0d1a47081fe079075 Mon Sep 17 00:00:00 2001 From: Argyrios Kyrtzidis Date: Tue, 15 May 2012 22:59:54 +0000 Subject: [objcmt] When using NSNumber numberWithInteger:/numberWithUnsignedInteger: be more liberal in rewriting when the parameter is an enum constant. Part of rdar://11438360 llvm-svn: 156873 --- clang/lib/Edit/RewriteObjCFoundationAPI.cpp | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) (limited to 'clang/lib/Edit/RewriteObjCFoundationAPI.cpp') diff --git a/clang/lib/Edit/RewriteObjCFoundationAPI.cpp b/clang/lib/Edit/RewriteObjCFoundationAPI.cpp index 38584d65ef4..5f7bef6f547 100644 --- a/clang/lib/Edit/RewriteObjCFoundationAPI.cpp +++ b/clang/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)) -- cgit v1.2.3