[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
This commit is contained in:
Fariborz Jahanian 2015-04-09 23:39:53 +00:00
parent 85be49d26d
commit 696c88753f
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;
}
}
} 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;

View File

@ -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;
}