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