зеркало из https://github.com/microsoft/clang.git
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:
Родитель
a0fb5861de
Коммит
aeca9637ce
|
@ -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])) {
|
||||
|
|
Загрузка…
Ссылка в новой задаче