Home | History | Annotate | Download | only in SemaObjC
      1 // RUN: %clang_cc1 -fblocks -fsyntax-only -verify -Wno-objc-root-class %s
      2 // expected-no-diagnostics
      3 
      4 @interface NSObject
      5 - (id)self;
      6 - (id)copy;
      7 @end
      8 
      9 typedef struct _foo  *__attribute__((NSObject)) Foo_ref;
     10 
     11 @interface TestObject {
     12     Foo_ref dict;
     13 }
     14 @property(retain) Foo_ref dict;
     15 @end
     16 
     17 @implementation TestObject
     18 @synthesize dict;
     19 @end
     20 
     21 @interface NSDictionary
     22 - (int)retainCount;
     23 @end
     24 
     25 int main(int argc, char *argv[]) {
     26     NSDictionary *dictRef;
     27     Foo_ref foo = (Foo_ref)dictRef;
     28 
     29     // do Properties retain?
     30     int before = [dictRef retainCount];
     31     int after = [dictRef retainCount];
     32 
     33     if ([foo retainCount] != [dictRef retainCount]) {
     34     }
     35 
     36     // do Blocks retain?
     37     {
     38         void (^block)(void) = ^{
     39             [foo self];
     40         };
     41         before = [foo retainCount];
     42         id save = [block copy];
     43         after = [foo retainCount];
     44         if (after <= before) {
     45             ;
     46         }
     47     }
     48     return 0;
     49 }
     50