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