Home | History | Annotate | Download | only in inlining
      1 // RUN: %clang_cc1 -analyze -analyzer-checker=core,osx -verify %s
      2 
      3 typedef 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