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
4
5#include "Common.h"
6
7id IhaveSideEffect();
8
9@interface Foo : NSObject {
10  id bar;
11}
12@property (strong) id bar;
13-(id)test:(id)obj;
14-(id)something;
15@end
16
17#define Something_Macro(key, comment) \
18 [[Foo new] something]
19
20@implementation Foo
21
22@synthesize bar;
23
24-(id)something {}
25
26-(id)test:(id)obj {
27  id x = self.bar;
28  self.bar = obj;
29
30  Something_Macro(@"foo", "@bar");
31
32  IhaveSideEffect();
33
34  [self something];
35
36  [self something];
37
38  IhaveSideEffect();
39  // do stuff with x;
40  return self;
41}
42
43- (id)test1 {
44  id x=0;
45  return (((x)));
46}
47@end
48
49id foo (Foo *p) {
50    p = p;
51    return (p);
52}
53
54void block_tests(Foo *p) {
55  id (^B)() = ^() {
56    if (p) {
57      id (^IB)() = ^() {
58        id bar = p;
59        return bar;
60      };
61      IB();
62    }
63    return p;
64  };
65}
66