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