refcnt_naming.m revision 8382cf57b722f130f1a6b45380639871c07271c1
1// RUN: clang-cc -analyze -analyzer-experimental-internal-checks -checker-cfref -analyzer-store=basic -verify %s 2// RUN: clang-cc -analyze -analyzer-experimental-internal-checks -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_theprefixdoescount; // read as "new theprefixdoescount" 19-(NSObject*)newestAwesomeStuff; // read as "newest awesome stuff" 20 21@end 22 23@interface MyClass : NSObject 24{ 25 id myObject; 26} 27- (NSURL *)myMethod:(NSString *)inString; 28- (NSURL *)getMethod:(NSString*)inString; 29- (void)addObject:(id)X; 30@end 31 32@implementation MyClass 33 34- (NSURL *)myMethod:(NSString *)inString 35{ 36 NSURL *url = (NSURL *)CFURLCreateWithString(0, (CFStringRef)inString, 0); // expected-warning{{leak}} 37 return url; 38} 39 40- (NSURL *)getMethod:(NSString *)inString 41{ 42 NSURL *url = (NSURL *)CFURLCreateWithString(0, (CFStringRef)inString, 0); 43 [self addObject:url]; 44 return url; // no-warning 45} 46 47void testNames(NamingTest* x) { 48 [x photocopy]; // no-warning 49 [x photoCopy]; // expected-warning{{leak}} 50 [x __blebPRCopy]; // expected-warning{{leak}} 51 [x __blebPRcopy]; // no-warning 52 [x new_theprefixdoescount]; // expected-warning{{leak}} 53 [x newestAwesomeStuff]; // no-warning 54} 55 56 57- (void)addObject:(id)X 58{ 59 myObject = X; 60} 61 62@end 63