[docs] Add LICENSE.txt to the root of the mono-repo
[llvm-project.git] / clang / test / ARCMT / releases-driver.m
blob96f96c1d3b482168181a1f740bcb553015ad8974
1 // RUN: %clang_cc1 -fblocks -fsyntax-only -fobjc-arc -x objective-c %s.result
2 // RUN: cat %s > %t
3 // RUN: %clang_cc1 -arcmt-action=modify -triple x86_64-apple-macosx10.6 -x objective-c %t
4 // RUN: diff %t %s.result
5 // RUN: rm %t
7 typedef int BOOL;
9 id IhaveSideEffect(void);
11 @protocol NSObject
12 - (BOOL)isEqual:(id)object;
13 - (id)retain;
14 - (oneway void)release;
15 @end
17 @interface NSObject <NSObject> {}
18 @end
20 @interface Foo : NSObject {
21   id bar;
23 @property (retain) id bar;
24 -(void)test:(id)obj;
25 @end
27 @implementation Foo
29 @synthesize bar;
31 -(void)test:(id)obj {
32   id x = self.bar;
33   [x retain];
34   self.bar = obj;
35   // do stuff with x;
36   [x release];
38   [IhaveSideEffect() release];
40   [x release], x = 0;
42   
43 @end
45 void func(Foo *p) {
46   [p release];
47   (([p release]));
50 @interface Baz {
51         id <NSObject> _foo;
53 @end
55 @implementation Baz
56 - (void) dealloc {
57   [_foo release];
59 @end
61 #define RELEASE_MACRO(x) [x release]
62 #define RELEASE_MACRO2(x) RELEASE_MACRO(x)
64 void test2(id p) {
65   RELEASE_MACRO(p);
66   RELEASE_MACRO2(p);