blob: a4c290442a57eacd6aa90fcf6ca536b558238453 [file] [log] [blame]
Ted Kremenek8382cf52009-11-13 18:46:29 +00001// 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
Ted Kremenek3ad2cc82008-10-22 23:56:21 +00003
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
Ted Kremenekb80976c2009-02-21 05:13:43 +000013@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"
Ted Kremeneke9731832009-10-20 00:13:00 +000018-(NSObject*)new_theprefixdoescount; // read as "new theprefixdoescount"
Ted Kremenekf0dff4c2009-02-23 02:50:20 +000019-(NSObject*)newestAwesomeStuff; // read as "newest awesome stuff"
20
Ted Kremenekb80976c2009-02-21 05:13:43 +000021@end
22
Ted Kremenek3ad2cc82008-10-22 23:56:21 +000023@interface MyClass : NSObject
24{
Ted Kremenekf4b35482008-10-24 20:33:56 +000025 id myObject;
Ted Kremenek3ad2cc82008-10-22 23:56:21 +000026}
27- (NSURL *)myMethod:(NSString *)inString;
Ted Kremenekf4b35482008-10-24 20:33:56 +000028- (NSURL *)getMethod:(NSString*)inString;
29- (void)addObject:(id)X;
Ted Kremenek3ad2cc82008-10-22 23:56:21 +000030@end
31
32@implementation MyClass
33
34- (NSURL *)myMethod:(NSString *)inString
35{
Ted Kremenekcf118d42009-02-04 23:49:09 +000036 NSURL *url = (NSURL *)CFURLCreateWithString(0, (CFStringRef)inString, 0); // expected-warning{{leak}}
37 return url;
Ted Kremenek3ad2cc82008-10-22 23:56:21 +000038}
39
Ted Kremenekf4b35482008-10-24 20:33:56 +000040- (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
Ted Kremenekb80976c2009-02-21 05:13:43 +000047void 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
Ted Kremeneke9731832009-10-20 00:13:00 +000052 [x new_theprefixdoescount]; // expected-warning{{leak}}
Ted Kremenekf0dff4c2009-02-23 02:50:20 +000053 [x newestAwesomeStuff]; // no-warning
Ted Kremenekb80976c2009-02-21 05:13:43 +000054}
55
Ted Kremenekf4b35482008-10-24 20:33:56 +000056
57- (void)addObject:(id)X
58{
59 myObject = X;
60}
61
Ted Kremenek3ad2cc82008-10-22 23:56:21 +000062@end