blob: 5eb6cf1e47704ec1f91f7d01c4ce6d0f88715657 [file] [log] [blame]
Ted Kremenek8382cf52009-11-13 18:46:29 +00001// RUN: clang-cc -analyze -analyzer-experimental-internal-checks -checker-cfref -warn-dead-stores -analyzer-store=basic -analyzer-constraints=basic -verify %s
2// RUN: clang-cc -analyze -analyzer-experimental-internal-checks -checker-cfref -warn-dead-stores -analyzer-store=basic -analyzer-constraints=range -verify %s
3// RUN: clang-cc -analyze -analyzer-experimental-internal-checks -checker-cfref -warn-dead-stores -analyzer-store=region -analyzer-constraints=basic -verify %s
4// RUN: clang-cc -analyze -analyzer-experimental-internal-checks -checker-cfref -warn-dead-stores -analyzer-store=region -analyzer-constraints=range -verify %s
Ted Kremenek553cf182008-06-25 21:21:56 +00005
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() {
Ted Kremenek89e202d2009-02-23 02:51:29 +000072 // FIXME: NSWindow doesn't own itself until it is displayed.
73 NSWindow *window = [[NSWindow alloc] // no-warning
Ted Kremenek553cf182008-06-25 21:21:56 +000074 initWithContentRect:NSMakeRect(0,0,100,100)
75 styleMask:NSTitledWindowMask|NSClosableWindowMask
76 backing:NSBackingStoreBuffered
77 defer:0
78 screen:0];
79
80 [window orderFrontRegardless];
81
Ted Kremenekcf118d42009-02-04 23:49:09 +000082 [window retain];
Ted Kremenek553cf182008-06-25 21:21:56 +000083}
84
85
86void f3() {
Ted Kremenek3aa7ecd2009-03-04 23:30:42 +000087 // FIXME: For now we don't track NSWindow.
88 NSWindow *window = [NSWindow alloc]; // expected-warning{{never read}}
Ted Kremenek553cf182008-06-25 21:21:56 +000089}