[Objective-C Sema] It is permissable to bridge cast to 'id'

of a CFType bridged to some unknown Objective-C type. 
rdar://20113785


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@234545 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Fariborz Jahanian 2015-04-09 23:39:53 +00:00
parent 6af26232ba
commit 7e9f4eeaf9
2 changed files with 15 additions and 5 deletions

View File

@ -3380,12 +3380,13 @@ static bool CheckObjCBridgeNSCast(Sema &S, QualType castType, Expr *castExpr,
return false; 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 true;
} }
return false; return false;

View File

@ -80,3 +80,12 @@ void testObjCBridgeId() {
ref = (__bridge_retained CFAnnotatedObjectRef) CreateSomething(); ref = (__bridge_retained CFAnnotatedObjectRef) CreateSomething();
ref = (__bridge_retained CFAnnotatedObjectRef) CreateNSString(); 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;
}