diff options
| author | Fariborz Jahanian <fjahanian@apple.com> | 2015-04-09 23:39:53 +0000 |
|---|---|---|
| committer | Fariborz Jahanian <fjahanian@apple.com> | 2015-04-09 23:39:53 +0000 |
| commit | 696c88753fe7db17f98b4fd6495bd71702675648 (patch) | |
| tree | c7edc83fb9e3f0957df60c16dde4ddb0c65c7d60 | |
| parent | 85be49d26d56a3d2c4da0ceeefdb3f4f9a4fa158 (diff) | |
| download | bcm5719-llvm-696c88753fe7db17f98b4fd6495bd71702675648.tar.gz bcm5719-llvm-696c88753fe7db17f98b4fd6495bd71702675648.zip | |
[Objective-C Sema] It is permissable to bridge cast to 'id'
of a CFType bridged to some unknown Objective-C type.
rdar://20113785
llvm-svn: 234545
| -rw-r--r-- | clang/lib/Sema/SemaExprObjC.cpp | 11 | ||||
| -rw-r--r-- | clang/test/SemaObjC/arc-bridged-cast.m | 9 |
2 files changed, 15 insertions, 5 deletions
diff --git a/clang/lib/Sema/SemaExprObjC.cpp b/clang/lib/Sema/SemaExprObjC.cpp index 52a384f7dcc..fdd3b986614 100644 --- a/clang/lib/Sema/SemaExprObjC.cpp +++ b/clang/lib/Sema/SemaExprObjC.cpp @@ -3380,12 +3380,13 @@ static bool CheckObjCBridgeNSCast(Sema &S, QualType castType, Expr *castExpr, return false; } } + } else if (!castType->isObjCIdType()) { + S.Diag(castExpr->getLocStart(), diag::err_objc_cf_bridged_not_interface) + << castExpr->getType() << Parm; + S.Diag(TDNDecl->getLocStart(), diag::note_declared_at); + if (Target) + S.Diag(Target->getLocStart(), diag::note_declared_at); } - S.Diag(castExpr->getLocStart(), diag::err_objc_cf_bridged_not_interface) - << castExpr->getType() << Parm; - S.Diag(TDNDecl->getLocStart(), diag::note_declared_at); - if (Target) - S.Diag(Target->getLocStart(), diag::note_declared_at); return true; } return false; diff --git a/clang/test/SemaObjC/arc-bridged-cast.m b/clang/test/SemaObjC/arc-bridged-cast.m index 9e716f9d40c..0ba7792146c 100644 --- a/clang/test/SemaObjC/arc-bridged-cast.m +++ b/clang/test/SemaObjC/arc-bridged-cast.m @@ -80,3 +80,12 @@ void testObjCBridgeId() { ref = (__bridge_retained CFAnnotatedObjectRef) CreateSomething(); ref = (__bridge_retained CFAnnotatedObjectRef) CreateNSString(); } + +// rdar://20113785 +typedef const struct __attribute__((objc_bridge(UIFont))) __CTFont * CTFontRef; + +id testObjCBridgeUnknownTypeToId(CTFontRef font) { + id x = (__bridge id)font; + return x; +} + |

