Home | History | Annotate | Download | only in SemaObjC
      1 // RUN: %clang_cc1 -fsyntax-only -fobjc-runtime-has-weak -fobjc-arc -fblocks -Wreceiver-is-weak -verify %s
      2 // rdar://10225276
      3 
      4 @interface Test0
      5 - (void) setBlock: (void(^)(void)) block;
      6 - (void) addBlock: (void(^)(void)) block;
      7 - (void) actNow;
      8 @end
      9 
     10 void test0(Test0 *x) {
     11   __weak Test0 *weakx = x;
     12   [x addBlock: ^{ [weakx actNow]; }]; // expected-warning {{weak receiver may be unpredictably null in ARC mode}}
     13   [x setBlock: ^{ [weakx actNow]; }]; // expected-warning {{weak receiver may be unpredictably null in ARC mode}}
     14   x.block = ^{ [weakx actNow]; }; // expected-warning {{weak receiver may be unpredictably null in ARC mode}}
     15 
     16   [weakx addBlock: ^{ [x actNow]; }]; // expected-warning {{weak receiver may be unpredictably null in ARC mode}}
     17   [weakx setBlock: ^{ [x actNow]; }]; // expected-warning {{weak receiver may be unpredictably null in ARC mode}}
     18   weakx.block = ^{ [x actNow]; };
     19 }
     20