[clang] Handle __declspec() attributes in using
[llvm-project.git] / clang / test / ARCMT / retains.m
blob43a94fc16cecf206181aa50a1d7e714aff860df7
1 // RUN: %clang_cc1 -fblocks -fsyntax-only -fobjc-arc -x objective-c %s.result
2 // RUN: arcmt-test --args -triple x86_64-apple-darwin10 -fblocks -fsyntax-only -x objective-c %s > %t
3 // RUN: diff %t %s.result
5 #include "Common.h"
7 id IhaveSideEffect(void);
9 @interface Foo : NSObject {
10   id bar;
12 @property (retain) id bar;
13 -(id)test:(id)obj;
14 -(id)something;
15 @end
17 #define Something_Macro(key, comment) \
18  [[Foo new] something]
20 @implementation Foo
22 @synthesize bar;
24 -(id)something {}
26 -(id)test:(id)obj {
27   id x = self.bar;
28   [x retain];
29   self.bar = obj;
30   if (obj)
31     [obj retain];
33   [Something_Macro(@"foo", "@bar") retain];
35   [IhaveSideEffect() retain];
37   [[self something] retain];
39   [[self retain] something];
41   [[IhaveSideEffect() retain] release];
42   [[x retain] release];
43   // do stuff with x;
44   [x release];
45   return [self retain];
47   
48 - (id)test1 {
49   id x=0;
50   ([x retain]);
51   return ((([x retain])));
53 @end
55 id foo (Foo *p) {
56     p = [p retain];
57     return ([p retain]);
60 void block_tests(Foo *p) {
61   id (^B)(void) = ^(void) {
62     if (p) {
63       id (^IB)(void) = ^(void) {
64         id bar = [p retain];
65         return bar;
66       };
67       IB();
68     }
69     return [p retain];
70   };