refcnt_naming.m revision d427023c334fe03105d9359711a3df4d6f23b344
1// RUN: clang -analyze -checker-cfref -verify %s 2 3typedef const struct __CFString * CFStringRef; 4typedef const struct __CFAllocator * CFAllocatorRef; 5typedef const struct __CFURL * CFURLRef; 6extern CFURLRef CFURLCreateWithString(CFAllocatorRef allocator, CFStringRef URLString, CFURLRef baseURL); 7typedef signed char BOOL; 8@protocol NSObject - (BOOL)isEqual:(id)object; @end 9@interface NSObject <NSObject> {} @end 10@class NSArray, NSString, NSURL; 11 12@interface MyClass : NSObject 13{ 14 id myObject; 15} 16- (NSURL *)myMethod:(NSString *)inString; 17- (NSURL *)getMethod:(NSString*)inString; 18- (void)addObject:(id)X; 19@end 20 21@implementation MyClass 22 23- (NSURL *)myMethod:(NSString *)inString 24{ 25 NSURL *url = (NSURL *)CFURLCreateWithString(0, (CFStringRef)inString, 0); 26 return url; // expected-warning{{leak}} 27} 28 29- (NSURL *)getMethod:(NSString *)inString 30{ 31 NSURL *url = (NSURL *)CFURLCreateWithString(0, (CFStringRef)inString, 0); 32 [self addObject:url]; 33 return url; // no-warning 34} 35 36 37- (void)addObject:(id)X 38{ 39 myObject = X; 40} 41 42@end 43