1// RUN: %clang_analyze_cc1 -analyze-function="-[Test1 myMethodWithY:withX:]" -analyzer-checker=core,osx.cocoa.RetainCount -analyzer-store=region -verify %s 2 3typedef signed char BOOL; 4typedef unsigned int NSUInteger; 5typedef 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 analyzed. 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 57