Skip the "-dealloc" check if a ObjC class contains no ivars.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@53100 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Ted Kremenek 2008-07-03 15:37:02 +00:00
Родитель a0fb5861de
Коммит aeca9637ce
2 изменённых файлов: 9 добавлений и 4 удалений

Просмотреть файл

@ -47,10 +47,15 @@ void clang::CheckObjCDealloc(ObjCImplementationDecl* D,
assert (LOpts.getGCMode() != LangOptions::GCOnly);
ASTContext& Ctx = BR.getContext();
ObjCInterfaceDecl* ID = D->getClassInterface();
// Does the class contain any ivars? If not, skip the check entirely.
if (ID->ivar_empty())
return;
// Determine if the class subclasses NSObject.
IdentifierInfo* NSObjectII = &Ctx.Idents.get("NSObject");
ObjCInterfaceDecl* ID = D->getClassInterface();
for ( ; ID ; ID = ID->getSuperClass())
if (ID->getIdentifier() == NSObjectII)

Просмотреть файл

@ -143,7 +143,7 @@ NSString* f10() {
- (NSString*) getShared;
+ (C1*) sharedInstance;
@end
@implementation C1 : NSObject {} // expected-warning{{Objective-C class 'C1' lacks a 'dealloc' instance method}}
@implementation C1 : NSObject {}
- (NSString*) getShared {
static NSString* s = 0;
if (!s) s = [[NSString alloc] init];
@ -161,7 +161,7 @@ NSString* f10() {
@interface SharedClass : NSObject
+ (id)sharedInstance;
@end
@implementation SharedClass // expected-warning {{Objective-C class 'SharedClass' lacks a 'dealloc' instance method}}
@implementation SharedClass
- (id)_init {
if ((self = [super init])) {