From: Fariborz Jahanian Date: Tue, 31 Jan 2012 22:09:44 +0000 (+0000) Subject: arc migrator: twik previous patch to exclude user provided X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=9c7aed308aa701e0ba573c04ebe8d17a4c1486c4;p=clang arc migrator: twik previous patch to exclude user provided explicit type cast. // rdar://10521744 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@149437 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/ARCMigrate/TransUnbridgedCasts.cpp b/lib/ARCMigrate/TransUnbridgedCasts.cpp index 5650824c96..42a92edd4e 100644 --- a/lib/ARCMigrate/TransUnbridgedCasts.cpp +++ b/lib/ARCMigrate/TransUnbridgedCasts.cpp @@ -136,7 +136,7 @@ private: FD->getParent()->isTranslationUnit() && FD->getLinkage() == ExternalLinkage) { Expr *Arg = callE->getArg(0); - if (const CastExpr *ICE = dyn_cast(Arg)) { + if (const ImplicitCastExpr *ICE = dyn_cast(Arg)) { const Expr *sub = ICE->getSubExpr(); QualType T = sub->getType(); if (T->isObjCObjectPointerType()) diff --git a/test/ARCMT/no-canceling-bridge-to-bridge-cast.m b/test/ARCMT/no-canceling-bridge-to-bridge-cast.m index e94e6574ae..164b84b892 100644 --- a/test/ARCMT/no-canceling-bridge-to-bridge-cast.m +++ b/test/ARCMT/no-canceling-bridge-to-bridge-cast.m @@ -33,9 +33,7 @@ CFTypeRef CFRetain(CFTypeRef cf); // expected-note {{use __bridge to convert directly (no change in ownership)}} \ // expected-note {{use __bridge_transfer to transfer ownership of a +1 'CFTypeRef' (aka 'const void *') into ARC}} - result = (id) CFRetain((CFTypeRef)((objc_format))); // expected-error {{cast of C pointer type 'CFTypeRef' (aka 'const void *') to Objective-C pointer type 'id' requires a bridged cast}} \ - // expected-note {{use __bridge to convert directly (no change in ownership)}} \ - // expected-note {{use __bridge_transfer to transfer ownership of a +1 'CFTypeRef' (aka 'const void *') into ARC}} + result = (id) CFRetain((CFTypeRef)((objc_format))); result = (id) CFRetain(cf_format); // OK }