mirror of https://github.com/microsoft/clang.git
Objective-C. More tests for both bridging attributes and
a fix to make it work when CFStructs have no definition. // rdar://17238954. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@210690 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
534f692b4d
commit
1e56828b1a
|
@ -3133,7 +3133,7 @@ static inline T *getObjCBridgeAttr(const TypedefType *TD) {
|
|||
if (QT->isPointerType()) {
|
||||
QT = QT->getPointeeType();
|
||||
if (const RecordType *RT = QT->getAs<RecordType>())
|
||||
if (RecordDecl *RD = RT->getDecl())
|
||||
if (RecordDecl *RD = RT->getDecl()->getMostRecentDecl())
|
||||
return RD->getAttr<T>();
|
||||
}
|
||||
return nullptr;
|
||||
|
|
|
@ -15,12 +15,37 @@ typedef struct __attribute__((objc_bridge_mutable(NSMutableAttributedString))) _
|
|||
struct __CFAttributedString {
|
||||
};
|
||||
|
||||
void Test1(CFAttributedStringRef attrStr)
|
||||
void Test1(CFAttributedStringRef attrStr, CFMutableAttributedStringRef mutable_attrStr)
|
||||
{
|
||||
id x = (NSAttributedString *) attrStr; // no warning
|
||||
id x = (NSAttributedString *) attrStr;
|
||||
id x1 =(NSAttributedString *) mutable_attrStr;
|
||||
id x2 = (NSMutableAttributedString *) attrStr;
|
||||
id x3 = (NSMutableAttributedString *) mutable_attrStr;
|
||||
}
|
||||
|
||||
void Test2(NSAttributedString *attrStr) {
|
||||
CFAttributedStringRef cfsr = (CFAttributedStringRef) attrStr;
|
||||
void Test2(NSAttributedString *ns_attrStr, NSMutableAttributedString *ns_mutable_attr_Str) {
|
||||
CFAttributedStringRef cfsr = (CFAttributedStringRef) ns_attrStr;
|
||||
CFMutableAttributedStringRef cfsr1 = (CFMutableAttributedStringRef) ns_attrStr;
|
||||
CFAttributedStringRef cfsr2 = (CFAttributedStringRef) ns_mutable_attr_Str;
|
||||
CFMutableAttributedStringRef cfsr3 = (CFMutableAttributedStringRef) ns_mutable_attr_Str;
|
||||
}
|
||||
|
||||
// Tests with no definition declaration for struct __NDCFAttributedString.
|
||||
typedef const struct __attribute__((objc_bridge(NSAttributedString))) __NDCFAttributedString *NDCFAttributedStringRef;
|
||||
|
||||
typedef struct __attribute__((objc_bridge_mutable(NSMutableAttributedString))) __NDCFAttributedString *NDCFMutableAttributedStringRef;
|
||||
|
||||
void Test3(NDCFAttributedStringRef attrStr, NDCFMutableAttributedStringRef mutable_attrStr)
|
||||
{
|
||||
id x = (NSAttributedString *) attrStr;
|
||||
id x1 =(NSAttributedString *) mutable_attrStr;
|
||||
id x2 = (NSMutableAttributedString *) attrStr;
|
||||
id x3 = (NSMutableAttributedString *) mutable_attrStr;
|
||||
}
|
||||
|
||||
void Test4(NSAttributedString *ns_attrStr, NSMutableAttributedString *ns_mutable_attr_Str) {
|
||||
NDCFAttributedStringRef cfsr = (NDCFAttributedStringRef) ns_attrStr;
|
||||
NDCFMutableAttributedStringRef cfsr1 = (NDCFMutableAttributedStringRef) ns_attrStr;
|
||||
NDCFAttributedStringRef cfsr2 = (NDCFAttributedStringRef) ns_mutable_attr_Str;
|
||||
NDCFMutableAttributedStringRef cfsr3 = (NDCFMutableAttributedStringRef) ns_mutable_attr_Str;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue