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