1*67e74705SXin Li// RUN: %clang_cc1 -analyze -analyzer-checker=core,osx.cocoa.RetainCount,alpha.core -analyzer-store=region -analyzer-constraints=range -verify -Wno-objc-root-class %s 2*67e74705SXin Li// expected-no-diagnostics 3*67e74705SXin Li 4*67e74705SXin Li// BEGIN delta-debugging reduced header stuff 5*67e74705SXin Li 6*67e74705SXin Litypedef struct objc_selector *SEL; 7*67e74705SXin Litypedef signed char BOOL; 8*67e74705SXin Litypedef unsigned int NSUInteger; 9*67e74705SXin Litypedef struct _NSZone NSZone; 10*67e74705SXin Li@class NSInvocation, NSMethodSignature, NSCoder, NSString, NSEnumerator; 11*67e74705SXin Li@protocol NSObject 12*67e74705SXin Li- (BOOL)isEqual:(id)object; 13*67e74705SXin Li- (oneway void)release; 14*67e74705SXin Li@end 15*67e74705SXin Li@protocol NSCopying 16*67e74705SXin Li- (id)copyWithZone:(NSZone *)zone; 17*67e74705SXin Li@end 18*67e74705SXin Li@protocol NSMutableCopying 19*67e74705SXin Li- (id)mutableCopyWithZone:(NSZone *)zone; 20*67e74705SXin Li@end 21*67e74705SXin Li@protocol NSCoding 22*67e74705SXin Li- (void)encodeWithCoder:(NSCoder *)aCoder; 23*67e74705SXin Li@end 24*67e74705SXin Li@interface NSObject <NSObject> {} 25*67e74705SXin Li+ (id)alloc; 26*67e74705SXin Li@end 27*67e74705SXin Litypedef float CGFloat; 28*67e74705SXin Litypedef struct _NSPoint {} NSRect; 29*67e74705SXin Listatic __inline__ __attribute__((always_inline)) NSRect NSMakeRect(CGFloat x, CGFloat y, CGFloat w, CGFloat h) { NSRect r; return r; } 30*67e74705SXin Litypedef struct {} NSFastEnumerationState; 31*67e74705SXin Li@protocol NSFastEnumeration 32*67e74705SXin Li- (NSUInteger)countByEnumeratingWithState:(NSFastEnumerationState *)state objects:(id *)stackbuf count:(NSUInteger)len; 33*67e74705SXin Li@end 34*67e74705SXin Li@class NSString; 35*67e74705SXin Li@interface NSArray : NSObject <NSCopying, NSMutableCopying, NSCoding, NSFastEnumeration> 36*67e74705SXin Li- (NSUInteger)count; 37*67e74705SXin Li@end 38*67e74705SXin Li@interface NSMutableArray : NSArray 39*67e74705SXin Li- (void)addObject:(id)anObject; 40*67e74705SXin Li@end @class NSAppleEventDescriptor; 41*67e74705SXin Lienum { NSBackingStoreRetained = 0, NSBackingStoreNonretained = 1, NSBackingStoreBuffered = 2 }; 42*67e74705SXin Litypedef NSUInteger NSBackingStoreType; 43*67e74705SXin Li@interface NSResponder : NSObject <NSCoding> {} @end 44*67e74705SXin Li@protocol NSAnimatablePropertyContainer 45*67e74705SXin Li- (id)animator; 46*67e74705SXin Li@end 47*67e74705SXin Li@protocol NSValidatedUserInterfaceItem 48*67e74705SXin Li- (SEL)action; 49*67e74705SXin Li@end 50*67e74705SXin Li@protocol NSUserInterfaceValidations 51*67e74705SXin Li- (BOOL)validateUserInterfaceItem:(id <NSValidatedUserInterfaceItem>)anItem; 52*67e74705SXin Li@end @class NSDate, NSDictionary, NSError, NSException, NSNotification; 53*67e74705SXin Lienum { NSBorderlessWindowMask = 0, NSTitledWindowMask = 1 << 0, NSClosableWindowMask = 1 << 1, NSMiniaturizableWindowMask = 1 << 2, NSResizableWindowMask = 1 << 3 }; 54*67e74705SXin Li@interface NSWindow : NSResponder <NSAnimatablePropertyContainer, NSUserInterfaceValidations> {} 55*67e74705SXin Li- (id)initWithContentRect:(NSRect)contentRect styleMask:(NSUInteger)aStyle backing:(NSBackingStoreType)bufferingType defer:(BOOL)flag; 56*67e74705SXin Li@end 57*67e74705SXin Liextern NSString *NSWindowDidBecomeKeyNotification; 58*67e74705SXin Li@interface NSPanel : NSWindow {} 59*67e74705SXin Li@end 60*67e74705SXin Li@class NSTableHeaderView; 61*67e74705SXin Li 62*67e74705SXin Li// END delta-debugging reduced header stuff 63*67e74705SXin Li 64*67e74705SXin Li@interface MyClass 65*67e74705SXin Li{ 66*67e74705SXin Li NSMutableArray *panels; 67*67e74705SXin Li} 68*67e74705SXin Li- (void)myMethod; 69*67e74705SXin Li- (void)myMethod2; 70*67e74705SXin Li@end 71*67e74705SXin Li 72*67e74705SXin Li@implementation MyClass // no-warning 73*67e74705SXin Li- (void)myMethod 74*67e74705SXin Li{ 75*67e74705SXin Li NSPanel *panel = [[NSPanel alloc] initWithContentRect:NSMakeRect(0, 0, 200, 200) styleMask:NSBorderlessWindowMask backing:NSBackingStoreBuffered defer:(BOOL)1]; 76*67e74705SXin Li 77*67e74705SXin Li [panels addObject:panel]; 78*67e74705SXin Li 79*67e74705SXin Li [panel release]; // no-warning 80*67e74705SXin Li} 81*67e74705SXin Li- (void)myMethod2 82*67e74705SXin Li{ 83*67e74705SXin Li NSPanel *panel = [[NSPanel alloc] initWithContentRect:NSMakeRect(0, 0, 200, 200) styleMask:NSBorderlessWindowMask backing:NSBackingStoreBuffered defer:(BOOL)1]; // no-warning 84*67e74705SXin Li 85*67e74705SXin Li [panels addObject:panel]; 86*67e74705SXin Li} 87*67e74705SXin Li@end 88*67e74705SXin Li 89