For the MissingDealloc check, don't treat IBOutlet ivars as being needed to be released

llvm-svn: 53647
This commit is contained in:
Ted Kremenek 2008-07-15 23:04:27 +00:00
parent 72da4ff4f3
commit ed1f72b67c
2 changed files with 24 additions and 2 deletions

View File

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

View File

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