From: John McCall Date: Fri, 17 Jun 2011 21:23:37 +0000 (+0000) Subject: As a hopefully temporary workaround for a header mistake, treat X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=1816442fd19cb2f1c35a807391a6b7f280b35c58;p=clang As a hopefully temporary workaround for a header mistake, treat __bridge_retain as a synonym for __bridge_retained. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@133295 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/include/clang/Basic/TokenKinds.def b/include/clang/Basic/TokenKinds.def index dd105a169b..86172b83ff 100644 --- a/include/clang/Basic/TokenKinds.def +++ b/include/clang/Basic/TokenKinds.def @@ -426,6 +426,7 @@ KEYWORD(__pixel , KEYALTIVEC) KEYWORD(__bridge , KEYARC) KEYWORD(__bridge_transfer , KEYARC) KEYWORD(__bridge_retained , KEYARC) +KEYWORD(__bridge_retain , KEYARC) // Alternate spelling for various tokens. There are GCC extensions in all // languages, but should not be disabled in strict conformance mode. diff --git a/lib/Basic/Targets.cpp b/lib/Basic/Targets.cpp index 7a062fcd62..5fcd0d2af9 100644 --- a/lib/Basic/Targets.cpp +++ b/lib/Basic/Targets.cpp @@ -104,6 +104,7 @@ static void getDarwinDefines(MacroBuilder &Builder, const LangOptions &Opts, Builder.defineMacro("__bridge", ""); Builder.defineMacro("__bridge_transfer", ""); Builder.defineMacro("__bridge_retained", ""); + Builder.defineMacro("__bridge_retain", ""); } if (Opts.Static) diff --git a/lib/Parse/ParseExpr.cpp b/lib/Parse/ParseExpr.cpp index 01bd0ed336..14f3805cd9 100644 --- a/lib/Parse/ParseExpr.cpp +++ b/lib/Parse/ParseExpr.cpp @@ -1780,7 +1780,8 @@ Parser::ParseParenExpression(ParenParseOption &ExprType, bool stopIfCastExpr, } else if (ExprType >= CompoundLiteral && (Tok.is(tok::kw___bridge) || Tok.is(tok::kw___bridge_transfer) || - Tok.is(tok::kw___bridge_retained))) { + Tok.is(tok::kw___bridge_retained) || + Tok.is(tok::kw___bridge_retain))) { // FIXME: temporary workaround // Parse an Objective-C ARC ownership cast expression. ObjCBridgeCastKind Kind; if (Tok.is(tok::kw___bridge)) diff --git a/test/SemaObjC/arc-bridged-cast.m b/test/SemaObjC/arc-bridged-cast.m index 227cce2248..d302182476 100644 --- a/test/SemaObjC/arc-bridged-cast.m +++ b/test/SemaObjC/arc-bridged-cast.m @@ -27,7 +27,10 @@ void to_cf(id obj) { CFTypeRef cf1 = (__bridge_retained CFTypeRef)CreateSomething(); CFStringRef cf2 = (__bridge_retained CFStringRef)CreateNSString(); CFTypeRef cf3 = (__bridge CFTypeRef)CreateSomething(); - CFStringRef cf4 = (__bridge CFStringRef)CreateNSString(); + CFStringRef cf4 = (__bridge CFStringRef)CreateNSString(); + + // rdar://problem/9629566 - temporary workaround + CFTypeRef cf5 = (__bridge_retain CFTypeRef)CreateSomething(); } void fixits() {