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