Anna Zaks | 0047ed1 | 2011-09-12 17:48:08 +0000 | [diff] [blame^] | 1 | // RUN: %clang_cc1 -analyze -analyze-function="myMethodWithY:withX:" -analyzer-checker=core,osx.cocoa.RetainCount -analyzer-store=region -verify %s |
| 2 | |
| 3 | typedef signed char BOOL; |
| 4 | typedef unsigned int NSUInteger; |
| 5 | typedef struct _NSZone NSZone; |
| 6 | @class NSInvocation, NSMethodSignature, NSCoder, NSString, NSEnumerator; |
| 7 | @protocol NSObject - (BOOL)isEqual:(id)object; @end |
| 8 | @protocol NSCopying - (id)copyWithZone:(NSZone *)zone; @end |
| 9 | @protocol NSCoding - (void)encodeWithCoder:(NSCoder *)aCoder; @end |
| 10 | @protocol NSMutableCopying - (id)mutableCopyWithZone:(NSZone *)zone; @end |
| 11 | @interface NSObject <NSObject> {} |
| 12 | +(id)alloc; |
| 13 | -(id)init; |
| 14 | -(id)autorelease; |
| 15 | -(id)copy; |
| 16 | -(id)retain; |
| 17 | @end |
| 18 | @interface NSString : NSObject <NSCopying, NSMutableCopying, NSCoding> |
| 19 | - (NSUInteger)length; |
| 20 | -(id)initWithFormat:(NSString *)f,...; |
| 21 | -(BOOL)isEqualToString:(NSString *)s; |
| 22 | + (id)string; |
| 23 | @end |
| 24 | |
| 25 | @interface Test1 : NSObject { |
| 26 | NSString *text; |
| 27 | } |
| 28 | -(id)myMethod; |
| 29 | -(id)myMethodWithY:(int)Y withX:(int)X; |
| 30 | |
| 31 | @property (nonatomic, assign) NSString *text; |
| 32 | @end |
| 33 | |
| 34 | @implementation Test1 |
| 35 | |
| 36 | @synthesize text; |
| 37 | |
| 38 | -(id)myMethod { |
| 39 | Test1 *cell = [[[Test1 alloc] init] autorelease]; |
| 40 | |
| 41 | NSString *string1 = [[NSString alloc] initWithFormat:@"test %f", 0.0]; // No warning: this function is not analized. |
| 42 | cell.text = string1; |
| 43 | |
| 44 | return cell; |
| 45 | } |
| 46 | |
| 47 | -(id)myMethodWithY:(int)Y withX:(int)X { |
| 48 | Test1 *cell = [[[Test1 alloc] init] autorelease]; |
| 49 | |
| 50 | NSString *string1 = [[NSString alloc] initWithFormat:@"test %f %d", 0.0, X+Y]; // expected-warning {{Potential leak}} |
| 51 | cell.text = string1; |
| 52 | |
| 53 | return cell; |
| 54 | } |
| 55 | |
| 56 | @end |