forked from OSchip/llvm-project
objective-C arc: ns_returns_retained is a type attribute in ARC,
and when used in property type declaration, is handled as type attribute. Do not issue the warning when declaraing the property. // rdar://12173491 llvm-svn: 162801
This commit is contained in:
parent
41b739517c
commit
272b7dc8ae
|
@ -3878,11 +3878,11 @@ static void handleNSReturnsRetainedAttr(Sema &S, Decl *D,
|
|||
|
||||
if (ObjCMethodDecl *MD = dyn_cast<ObjCMethodDecl>(D))
|
||||
returnType = MD->getResultType();
|
||||
else if (ObjCPropertyDecl *PD = dyn_cast<ObjCPropertyDecl>(D))
|
||||
returnType = PD->getType();
|
||||
else if (S.getLangOpts().ObjCAutoRefCount && hasDeclarator(D) &&
|
||||
(Attr.getKind() == AttributeList::AT_NSReturnsRetained))
|
||||
return; // ignore: was handled as a type attribute
|
||||
else if (ObjCPropertyDecl *PD = dyn_cast<ObjCPropertyDecl>(D))
|
||||
returnType = PD->getType();
|
||||
else if (FunctionDecl *FD = dyn_cast<FunctionDecl>(D))
|
||||
returnType = FD->getResultType();
|
||||
else {
|
||||
|
|
|
@ -85,6 +85,8 @@ void func()
|
|||
- (id)ns_non __attribute((ns_returns_not_retained)); // expected-error {{overriding method has mismatched ns_returns_not_retained attributes}}
|
||||
- (id)not_ret:(id) b __attribute((ns_returns_retained)); // expected-error {{overriding method has mismatched ns_returns_retained attributes}}
|
||||
- (id)both__returns_not_retained:(id) b __attribute((ns_returns_not_retained));
|
||||
// rdar://12173491
|
||||
@property (copy, nonatomic) __attribute__((ns_returns_retained)) id (^fblock)(void);
|
||||
@end
|
||||
|
||||
// Test that we give a good diagnostic here that mentions the missing
|
||||
|
|
Loading…
Reference in New Issue