150
|
1 // RUN: %clang_analyze_cc1 -analyzer-checker=core,osx.cocoa.RetainCount,alpha.core -analyzer-store=region -verify -Wno-objc-root-class %s
|
|
2 // expected-no-diagnostics
|
|
3
|
|
4 // BEGIN delta-debugging reduced header stuff
|
|
5
|
|
6 typedef struct objc_selector *SEL;
|
|
7 typedef signed char BOOL;
|
|
8 typedef unsigned int NSUInteger;
|
|
9 typedef 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
|
|
27 typedef float CGFloat;
|
|
28 typedef struct _NSPoint {} NSRect;
|
|
29 static __inline__ __attribute__((always_inline)) NSRect NSMakeRect(CGFloat x, CGFloat y, CGFloat w, CGFloat h) { NSRect r; return r; }
|
|
30 typedef 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;
|
|
41 enum { NSBackingStoreRetained = 0, NSBackingStoreNonretained = 1, NSBackingStoreBuffered = 2 };
|
|
42 typedef 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;
|
|
53 enum { 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
|
|
57 extern 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
|