NSWindow.m revision 9457a800f1fea4db4bb595c77de277609913b1b3
1// RUN: clang -analyze -checker-cfref -warn-dead-stores -analyzer-store=basic -analyzer-constraints=basic -verify %s && 2// RUN: clang -analyze -checker-cfref -warn-dead-stores -analyzer-store=basic -analyzer-constraints=range -verify %s && 3// RUN: clang -analyze -checker-cfref -warn-dead-stores -analyzer-store=region -analyzer-constraints=basic -verify %s && 4// RUN: clang -analyze -checker-cfref -warn-dead-stores -analyzer-store=region -analyzer-constraints=range -verify %s 5 6// These declarations were reduced using Delta-Debugging from Foundation.h 7// on Mac OS X. The test cases are below. 8 9typedef struct objc_selector *SEL; 10typedef signed char BOOL; 11typedef unsigned int NSUInteger; 12@class NSInvocation, NSMethodSignature, NSCoder, NSString, NSEnumerator; 13@protocol NSObject 14- (BOOL)isEqual:(id)object; 15- (id)retain; 16@end 17@protocol NSCoding - (void)encodeWithCoder:(NSCoder *)aCoder; 18@end 19@interface NSObject <NSObject> {} 20 + (id)alloc; 21@end 22typedef float CGFloat; 23typedef struct _NSPoint {} NSRect; 24NSRect NSMakeRect(CGFloat x, CGFloat y, CGFloat w, CGFloat h); 25enum { NSBackingStoreRetained = 0, NSBackingStoreNonretained = 1, NSBackingStoreBuffered = 2 }; 26typedef NSUInteger NSBackingStoreType; 27@interface NSResponder : NSObject <NSCoding> {} 28@end 29@protocol NSAnimatablePropertyContainer 30- (id)animator; 31@end 32extern NSString *NSAnimationTriggerOrderIn ; 33@class CIFilter, CALayer, NSDictionary, NSScreen, NSShadow, NSTrackingArea; 34@interface NSView : NSResponder <NSAnimatablePropertyContainer> {} @end 35@protocol NSValidatedUserInterfaceItem - (SEL)action; @end 36@protocol NSUserInterfaceValidations - (BOOL)validateUserInterfaceItem:(id <NSValidatedUserInterfaceItem>)anItem; @end @class NSNotification, NSText, NSView, NSMutableSet, NSSet, NSDate; 37enum { NSBorderlessWindowMask = 0, NSTitledWindowMask = 1 << 0, NSClosableWindowMask = 1 << 1, NSMiniaturizableWindowMask = 1 << 2, NSResizableWindowMask = 1 << 3 }; 38@interface NSWindow : NSResponder <NSAnimatablePropertyContainer, NSUserInterfaceValidations> { 39 struct __wFlags {} _wFlags; 40} 41- (id)initWithContentRect:(NSRect)contentRect styleMask:(NSUInteger)aStyle backing:(NSBackingStoreType)bufferingType defer:(BOOL)flag; 42- (id)initWithContentRect:(NSRect)contentRect styleMask:(NSUInteger)aStyle backing:(NSBackingStoreType)bufferingType defer:(BOOL)flag screen:(NSScreen *)screen; 43- (void)orderFrontRegardless; 44@end 45 46extern NSString *NSWindowDidBecomeKeyNotification; 47 48// Test cases. 49 50void f1() { 51 NSWindow *window = [[NSWindow alloc] 52 initWithContentRect:NSMakeRect(0,0,100,100) 53 styleMask:NSTitledWindowMask|NSClosableWindowMask 54 backing:NSBackingStoreBuffered 55 defer:0]; 56 57 [window orderFrontRegardless]; // no-warning 58} 59 60void f2() { 61 NSWindow *window = [[NSWindow alloc] 62 initWithContentRect:NSMakeRect(0,0,100,100) 63 styleMask:NSTitledWindowMask|NSClosableWindowMask 64 backing:NSBackingStoreBuffered 65 defer:0 66 screen:0]; 67 68 [window orderFrontRegardless]; // no-warning 69} 70 71void f2b() { 72 NSWindow *window = [[NSWindow alloc] // expected-warning{{leak}} 73 initWithContentRect:NSMakeRect(0,0,100,100) 74 styleMask:NSTitledWindowMask|NSClosableWindowMask 75 backing:NSBackingStoreBuffered 76 defer:0 77 screen:0]; 78 79 [window orderFrontRegardless]; 80 81 [window retain]; 82} 83 84 85void f3() { 86 NSWindow *window = [NSWindow alloc]; // expected-warning{{never read}} expected-warning{{leak}} 87} 88