mirror of https://github.com/microsoft/clang.git
Objective-C diagnostics: isObjCNSObjectType should check through AttributedType.
For the following example: typedef __attribute__((NSObject)) CGColorRef ColorAttrRef; @property (strong, nullable) ColorAttrRef color; The property type should be ObjC NSObject type and the compiler should not emit error: property with 'retain (or strong)' attribute must be of object type rdar://problem/27747154 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@278742 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
e0242d84df
commit
5b5d415d6c
|
@ -3686,10 +3686,18 @@ bool Type::isObjCARCImplicitlyUnretainedType() const {
|
|||
}
|
||||
|
||||
bool Type::isObjCNSObjectType() const {
|
||||
if (const TypedefType *typedefType = dyn_cast<TypedefType>(this))
|
||||
return typedefType->getDecl()->hasAttr<ObjCNSObjectAttr>();
|
||||
return false;
|
||||
const Type *cur = this;
|
||||
while (true) {
|
||||
if (const TypedefType *typedefType = dyn_cast<TypedefType>(cur))
|
||||
return typedefType->getDecl()->hasAttr<ObjCNSObjectAttr>();
|
||||
|
||||
// Single-step desugar until we run out of sugar.
|
||||
QualType next = cur->getLocallyUnqualifiedSingleStepDesugaredType();
|
||||
if (next.getTypePtr() == cur) return false;
|
||||
cur = next.getTypePtr();
|
||||
}
|
||||
}
|
||||
|
||||
bool Type::isObjCIndependentClassType() const {
|
||||
if (const TypedefType *typedefType = dyn_cast<TypedefType>(this))
|
||||
return typedefType->getDecl()->hasAttr<ObjCIndependentClassAttr>();
|
||||
|
|
|
@ -21,6 +21,8 @@ typedef struct CGColor * __attribute__((NSObject)) CGColorRefNoNSObject; // no-w
|
|||
@property (nonatomic, retain) CGColorRefNoNSObject color;
|
||||
// rdar://problem/12197822
|
||||
@property (strong) __attribute__((NSObject)) CFTypeRef myObj; // no-warning
|
||||
//rdar://problem/27747154
|
||||
@property (strong, nullable) CGColorRefNoNSObject color2; // no-warning
|
||||
@end
|
||||
|
||||
void setProperty(id self, id value) {
|
||||
|
|
Loading…
Reference in New Issue