Patch by Nikita Zhuk: test case for fix for false positive reported in PR2978.

llvm-svn: 58432
This commit is contained in:
Ted Kremenek 2008-10-30 15:19:43 +00:00
parent 689ec0eb32
commit d26da8cf82
1 changed files with 55 additions and 0 deletions

View File

@ -0,0 +1,55 @@
// RUN: clang -warn-objc-missing-dealloc %s -verify
// Tests for the checker which checks missing/extra ivar 'release' calls
// in dealloc.
@interface NSObject
- (void)release;
@end
@interface MyClass : NSObject {
@private
id _X;
id _Y;
id _Z;
id _K;
id _N;
id _M;
id _V;
id _W;
}
@property(retain) id X;
@property(retain) id Y;
@property(assign) id Z;
@property(assign) id K;
@property(assign, readonly) id N;
@property(retain) id M;
@property(retain) id V;
@property(retain) id W;
@end
@implementation MyClass
@synthesize X = _X;
@synthesize Y = _Y; // expected-warning{{The '_Y' instance variable was retained by a synthesized property but wasn't released in 'dealloc'}}
@synthesize Z = _Z; // expected-warning{{The '_Z' instance variable was not retained by a synthesized property but was released in 'dealloc'}}
@synthesize K = _K;
@synthesize N = _N;
@synthesize M = _M;
@synthesize V = _V;
@synthesize W = _W; // expected-warning{{The '_W' instance variable was retained by a synthesized property but wasn't released in 'dealloc'}}
- (void)dealloc
{
[_X release];
[_Z release];
[_N release];
self.M = 0; // This will release '_M'
[self setV:0]; // This will release '_V'
[self setW:@"newW"]; // This will release '_W', but retain the new value
[super dealloc];
}
@end