refcnt_naming.m revision e1cea75e70d76f55157749a7bcad319050492945
1// RUN: clang-cc -analyze -checker-cfref -analyzer-store=basic -verify %s &&
2// RUN: clang-cc -analyze -checker-cfref -analyzer-store=basic-new-cast -verify %s &&
3// RUN: clang-cc -analyze -checker-cfref -analyzer-store=region -verify %s
4
5typedef const struct __CFString * CFStringRef;
6typedef const struct __CFAllocator * CFAllocatorRef;
7typedef const struct __CFURL * CFURLRef;
8extern CFURLRef CFURLCreateWithString(CFAllocatorRef allocator, CFStringRef URLString, CFURLRef baseURL);
9typedef signed char BOOL;
10@protocol NSObject  - (BOOL)isEqual:(id)object; @end
11@interface NSObject <NSObject> {} @end
12@class NSArray, NSString, NSURL;
13
14@interface NamingTest : NSObject {}
15-(NSObject*)photocopy;    // read as "photocopy"
16-(NSObject*)photoCopy;    // read as "photo Copy"
17-(NSObject*)__blebPRCopy; // read as "bleb PRCopy"
18-(NSObject*)__blebPRcopy; // read as "bleb P Rcopy"
19-(NSObject*)new_theprefixdoesnotcount; // read as "theprefixdoesnotcount"
20-(NSObject*)newestAwesomeStuff; // read as "newest awesome stuff"
21
22@end
23
24@interface MyClass : NSObject
25{
26  id myObject;
27}
28- (NSURL *)myMethod:(NSString *)inString;
29- (NSURL *)getMethod:(NSString*)inString;
30- (void)addObject:(id)X;
31@end
32
33@implementation MyClass
34
35- (NSURL *)myMethod:(NSString *)inString
36{
37  NSURL *url = (NSURL *)CFURLCreateWithString(0, (CFStringRef)inString, 0); // expected-warning{{leak}}
38  return url;
39}
40
41- (NSURL *)getMethod:(NSString *)inString
42{
43  NSURL *url = (NSURL *)CFURLCreateWithString(0, (CFStringRef)inString, 0);
44  [self addObject:url];
45  return url; // no-warning
46}
47
48void testNames(NamingTest* x) {
49  [x photocopy]; // no-warning
50  [x photoCopy]; // expected-warning{{leak}}
51  [x __blebPRCopy]; // expected-warning{{leak}}
52  [x __blebPRcopy]; // no-warning
53  [x new_theprefixdoesnotcount]; // no-warning
54  [x newestAwesomeStuff]; // no-warning
55}
56
57
58- (void)addObject:(id)X
59{
60  myObject = X;
61}
62
63@end
64