NSWindow.m revision a676d501a001657892c483bd4d651650e168f337
1// RUN: %clang_cc1 -analyze -analyzer-checker=core.experimental -analyzer-check-objc-mem -analyzer-checker=DeadStores -analyzer-store=basic -analyzer-constraints=basic -verify %s 2// RUN: %clang_cc1 -analyze -analyzer-checker=core.experimental -analyzer-check-objc-mem -analyzer-checker=DeadStores -analyzer-store=basic -analyzer-constraints=range -verify %s 3// RUN: %clang_cc1 -analyze -analyzer-checker=core.experimental -analyzer-check-objc-mem -analyzer-checker=DeadStores -analyzer-store=region -analyzer-constraints=basic -verify %s 4// RUN: %clang_cc1 -analyze -analyzer-checker=core.experimental -analyzer-check-objc-mem -analyzer-checker=DeadStores -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 // FIXME: NSWindow doesn't own itself until it is displayed. 73 NSWindow *window = [[NSWindow alloc] // no-warning 74 initWithContentRect:NSMakeRect(0,0,100,100) 75 styleMask:NSTitledWindowMask|NSClosableWindowMask 76 backing:NSBackingStoreBuffered 77 defer:0 78 screen:0]; 79 80 [window orderFrontRegardless]; 81 82 [window retain]; 83} 84 85 86void f3() { 87 // FIXME: For now we don't track NSWindow. 88 NSWindow *window = [NSWindow alloc]; // expected-warning{{never read}} 89} 90