Home | History | Annotate | Download | only in Analysis
      1 // RUN: %clang_cc1 -analyze -analyzer-checker=core,osx.cocoa.RetainCount,alpha.core -analyzer-store=region -analyzer-constraints=range -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 
     89