1 // RUN: %clang_cc1 -analyze -analyzer-checker=core -analyzer-store=region -verify %s 2 3 //===----------------------------------------------------------------------===// 4 // The following code is reduced using delta-debugging from 5 // Foundation.h (Mac OS X). 6 // 7 // It includes the basic definitions for the test cases below. 8 // Not directly including Foundation.h directly makes this test case 9 // both svelte and portable to non-Mac platforms. 10 //===----------------------------------------------------------------------===// 11 12 typedef signed char BOOL; 13 typedef unsigned int NSUInteger; 14 typedef struct _NSZone NSZone; 15 @class NSInvocation, NSMethodSignature, NSCoder, NSString, NSEnumerator; 16 @protocol NSObject - (BOOL)isEqual:(id)object; @end 17 @protocol NSCopying - (id)copyWithZone:(NSZone *)zone; @end 18 @protocol NSMutableCopying - (id)mutableCopyWithZone:(NSZone *)zone; @end 19 @protocol NSCoding - (void)encodeWithCoder:(NSCoder *)aCoder; @end 20 @interface NSObject <NSObject> {} @end 21 @class NSString, NSData; 22 @class NSString, NSData, NSMutableData, NSMutableDictionary, NSMutableArray; 23 typedef struct {} NSFastEnumerationState; 24 @protocol NSFastEnumeration 25 - (NSUInteger)countByEnumeratingWithState:(NSFastEnumerationState *)state objects:(id *)stackbuf count:(NSUInteger)len; 26 @end 27 @class NSData, NSIndexSet, NSString, NSURL; 28 @interface NSArray : NSObject <NSCopying, NSMutableCopying, NSCoding, NSFastEnumeration> 29 - (NSUInteger)count; 30 @end 31 @interface NSArray (NSArrayCreation) 32 + (id)array; 33 - (NSUInteger)length; 34 - (void)addObject:(id)object; 35 @end 36 extern NSString * const NSUndoManagerCheckpointNotification; 37 38 //===----------------------------------------------------------------------===// 39 // Test cases. 40 //===----------------------------------------------------------------------===// 41 42 unsigned f1() { 43 NSString *aString; 44 return [aString length]; // expected-warning {{Receiver in message expression is an uninitialized value}} 45 } 46 47 unsigned f2() { 48 NSString *aString = 0; 49 return [aString length]; // no-warning 50 } 51 52 void f3() { 53 NSMutableArray *aArray = [NSArray array]; 54 NSString *aString; 55 [aArray addObject:aString]; // expected-warning {{Argument in message expression is an uninitialized value}} 56 } 57