1// RUN: %clang_cc1 -analyze -analyzer-checker=core,osx -verify %s 2 3typedef signed char BOOL; 4 5@protocol NSObject - (BOOL)isEqual:(id)object; @end 6@interface NSObject <NSObject> {} 7+(id)alloc; 8+(id)new; 9-(id)init; 10-(id)autorelease; 11-(id)copy; 12- (Class)class; 13-(id)retain; 14- (oneway void)release; 15@end 16 17@interface Cell : NSObject { 18 int x; 19} 20- (id) init; 21- (void)test; 22@end 23 24@implementation Cell 25- (id) init { 26 if ((self = [super init])) { 27 return self; 28 } 29 // Test that this is being analyzed. 30 int m; 31 m = m + 1; //expected-warning {{The left operand of '+' is a garbage value}} 32 return self; 33} 34 35// Make sure that we do not propagate the 'nil' check from inlined 'init' to 'test'. 36- (void) test { 37 Cell *newCell = [[Cell alloc] init]; 38 newCell->x = 5; // no-warning 39 [newCell release]; 40} 41@end 42