refcnt_naming.m revision b80976c752ad3469c54ecd10d5ba5847fd48d7a8
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 NamingTest : NSObject {} 14-(NSObject*)photocopy; // read as "photocopy" 15-(NSObject*)photoCopy; // read as "photo Copy" 16-(NSObject*)__blebPRCopy; // read as "bleb PRCopy" 17-(NSObject*)__blebPRcopy; // read as "bleb P Rcopy" 18-(NSObject*)new_theprefixdoesnotcount; // read as "theprefixdoesnotcount" 19@end 20 21@interface MyClass : NSObject 22{ 23 id myObject; 24} 25- (NSURL *)myMethod:(NSString *)inString; 26- (NSURL *)getMethod:(NSString*)inString; 27- (void)addObject:(id)X; 28@end 29 30@implementation MyClass 31 32- (NSURL *)myMethod:(NSString *)inString 33{ 34 NSURL *url = (NSURL *)CFURLCreateWithString(0, (CFStringRef)inString, 0); // expected-warning{{leak}} 35 return url; 36} 37 38- (NSURL *)getMethod:(NSString *)inString 39{ 40 NSURL *url = (NSURL *)CFURLCreateWithString(0, (CFStringRef)inString, 0); 41 [self addObject:url]; 42 return url; // no-warning 43} 44 45void testNames(NamingTest* x) { 46 [x photocopy]; // no-warning 47 [x photoCopy]; // expected-warning{{leak}} 48 [x __blebPRCopy]; // expected-warning{{leak}} 49 [x __blebPRcopy]; // no-warning 50 [x new_theprefixdoesnotcount]; // no-warning 51} 52 53 54- (void)addObject:(id)X 55{ 56 myObject = X; 57} 58 59@end 60