1 | // RUN: %clang_analyze_cc1 -analyze-function="-[Test1 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 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 | |