2009-01-21 07:17:32 +08:00
|
|
|
// RUN: clang -analyze -warn-objc-missing-dealloc '-DIBOutlet=__attribute__((iboutlet))' %s --verify
|
2008-12-09 05:59:21 +08:00
|
|
|
typedef signed char BOOL;
|
|
|
|
@protocol NSObject - (BOOL)isEqual:(id)object; @end
|
|
|
|
@interface NSObject <NSObject> {}
|
|
|
|
- (void)dealloc;
|
2008-12-09 06:01:50 +08:00
|
|
|
- (id)init;
|
2008-12-09 05:59:21 +08:00
|
|
|
@end
|
|
|
|
|
2008-12-09 06:01:50 +08:00
|
|
|
typedef struct objc_selector *SEL;
|
|
|
|
|
2008-12-09 05:59:21 +08:00
|
|
|
// <rdar://problem/6380411>: 'myproperty' has kind 'assign' and thus the
|
|
|
|
// assignment through the setter does not perform a release.
|
|
|
|
|
|
|
|
@interface MyObject : NSObject {
|
|
|
|
id _myproperty;
|
|
|
|
}
|
|
|
|
@property(assign) id myproperty;
|
|
|
|
@end
|
|
|
|
|
|
|
|
@implementation MyObject
|
|
|
|
@synthesize myproperty=_myproperty; // no-warning
|
|
|
|
- (void)dealloc {
|
|
|
|
self.myproperty = 0;
|
|
|
|
[super dealloc];
|
|
|
|
}
|
|
|
|
@end
|
2008-12-09 06:01:50 +08:00
|
|
|
|
|
|
|
//===------------------------------------------------------------------------===
|
|
|
|
// Don't warn about iVars that are selectors.
|
|
|
|
|
|
|
|
@interface TestSELs : NSObject {
|
|
|
|
SEL a;
|
|
|
|
SEL b;
|
|
|
|
}
|
|
|
|
|
|
|
|
@end
|
|
|
|
|
|
|
|
@implementation TestSELs // no-warning
|
|
|
|
- (id)init {
|
|
|
|
if( (self = [super init]) ) {
|
|
|
|
a = @selector(a);
|
|
|
|
b = @selector(b);
|
|
|
|
}
|
|
|
|
|
|
|
|
return self;
|
|
|
|
}
|
|
|
|
@end
|
2008-12-09 06:05:43 +08:00
|
|
|
|
|
|
|
//===------------------------------------------------------------------------===
|
|
|
|
// Don't warn about iVars that are IBOutlets.
|
|
|
|
|
|
|
|
#ifndef IBOutlet
|
|
|
|
#define IBOutlet
|
|
|
|
#endif
|
|
|
|
|
|
|
|
@class NSWindow;
|
|
|
|
|
|
|
|
@interface HasOutlet : NSObject {
|
|
|
|
IBOutlet NSWindow *window;
|
|
|
|
}
|
|
|
|
@end
|
|
|
|
|
|
|
|
@implementation HasOutlet // no-warning
|
|
|
|
@end
|
|
|
|
|