For the MissingDealloc check, don't treat IBOutlet ivars as being needed to be released
llvm-svn: 53647
This commit is contained in:
parent
72da4ff4f3
commit
ed1f72b67c
|
@ -60,9 +60,11 @@ void clang::CheckObjCDealloc(ObjCImplementationDecl* D,
|
|||
for (ObjCInterfaceDecl::ivar_iterator I=ID->ivar_begin(), E=ID->ivar_end();
|
||||
I!=E; ++I) {
|
||||
|
||||
QualType T = (*I)->getType();
|
||||
ObjCIvarDecl* ID = *I;
|
||||
QualType T = ID->getType();
|
||||
|
||||
if (T->isPointerType() || T->isObjCQualifiedIdType()) {
|
||||
if ((T->isPointerType() || T->isObjCQualifiedIdType()) &&
|
||||
ID->getAttr<IBOutletAttr>() == 0) { // Skip IBOutlets.
|
||||
containsPointerIvar = true;
|
||||
break;
|
||||
}
|
||||
|
|
|
@ -0,0 +1,20 @@
|
|||
// RUN: clang -warn-objc-missing-dealloc '-DIBOutlet=__attribute__((iboutlet))' %s --verify
|
||||
|
||||
#ifndef IBOutlet
|
||||
#define IBOutlet
|
||||
#endif
|
||||
|
||||
@class NSWindow;
|
||||
|
||||
@interface NSObject {}
|
||||
- (void)dealloc;
|
||||
@end
|
||||
|
||||
@interface A : NSObject {
|
||||
IBOutlet NSWindow *window;
|
||||
}
|
||||
@end
|
||||
|
||||
@implementation A // no-warning
|
||||
@end
|
||||
|
Loading…
Reference in New Issue