diff options
author | Fariborz Jahanian <fjahanian@apple.com> | 2013-11-14 00:43:05 +0000 |
---|---|---|
committer | Fariborz Jahanian <fjahanian@apple.com> | 2013-11-14 00:43:05 +0000 |
commit | ae02d1552f1707f6854332fe28e2f2eb65e75c26 (patch) | |
tree | b8ab59ebc3d9340ae75c49b3caff753cd5824e67 /clang/lib/Sema/SemaDeclAttr.cpp | |
parent | 7981f5b86c7738939b1912a067dc2a35520096dc (diff) | |
download | bcm5719-llvm-ae02d1552f1707f6854332fe28e2f2eb65e75c26.tar.gz bcm5719-llvm-ae02d1552f1707f6854332fe28e2f2eb65e75c26.zip |
ObjectiveC ARC. objc_bridge attribute should be applied to
toll-free bridging cf types only. // rdar//15454846 wip.
llvm-svn: 194640
Diffstat (limited to 'clang/lib/Sema/SemaDeclAttr.cpp')
-rw-r--r-- | clang/lib/Sema/SemaDeclAttr.cpp | 7 |
1 files changed, 3 insertions, 4 deletions
diff --git a/clang/lib/Sema/SemaDeclAttr.cpp b/clang/lib/Sema/SemaDeclAttr.cpp index 46a85c59b52..30ddd4d51d6 100644 --- a/clang/lib/Sema/SemaDeclAttr.cpp +++ b/clang/lib/Sema/SemaDeclAttr.cpp @@ -207,10 +207,9 @@ static inline bool isCFStringType(QualType T, ASTContext &Ctx) { return RD->getIdentifier() == &Ctx.Idents.get("__CFString"); } -static inline bool isCFRefType(TypedefNameDecl *TD, ASTContext &Ctx) { +static inline bool isTollFreeBridgeCFRefType(TypedefNameDecl *TD, ASTContext &Ctx) { StringRef TDName = TD->getIdentifier()->getName(); - return ((TDName.startswith("CF") || TDName.startswith("CG")) && - (TDName.rfind("Ref") != StringRef::npos)); + return (TDName.startswith("CF") && TDName.endswith("Ref")); } static unsigned getNumAttributeArgs(const AttributeList &Attr) { @@ -4414,7 +4413,7 @@ static void handleObjCBridgeAttr(Sema &S, Scope *Sc, Decl *D, return; } // Check for T being a CFType goes here. - if (!isCFRefType(TD, S.Context)) { + if (!isTollFreeBridgeCFRefType(TD, S.Context)) { S.Diag(TD->getLocStart(), diag::err_objc_bridge_not_cftype); return; } |