1// RUN: %clang_cc1 -fsyntax-only -fobjc-arc -verify -fblocks -triple x86_64-apple-darwin10.0.0 -DOBJCARC %s 2// RUN: %clang_cc1 -fsyntax-only -verify -fblocks -triple x86_64-apple-darwin10.0.0 %s 3// rdar://10187884 4 5#ifdef OBJCARC 6typedef void (^blk)(id arg1, __attribute((ns_consumed)) id arg2); 7typedef void (^blk1)(__attribute((ns_consumed))id arg1, __attribute((ns_consumed)) id arg2); 8blk a = ^void (__attribute((ns_consumed)) id arg1, __attribute((ns_consumed)) id arg2){}; // expected-error {{incompatible block pointer types initializing}} 9 10blk b = ^void (id arg1, __attribute((ns_consumed)) id arg2){}; 11 12blk c = ^void (__attribute((ns_consumed)) id arg1, __attribute((ns_consumed)) id arg2){}; // expected-error {{incompatible block pointer types initializing}} 13 14blk d = ^void (id arg1, id arg2) {}; // expected-error {{incompatible block pointer types initializing}} 15 16blk1 a1 = ^void (__attribute((ns_consumed)) id arg1, id arg2){}; // expected-error {{incompatible block pointer types initializing}} 17 18blk1 b2 = ^void (id arg1, __attribute((ns_consumed)) id arg2){}; // expected-error {{incompatible block pointer types initializing}} 19 20blk1 c3 = ^void (__attribute((ns_consumed)) id arg1, __attribute((ns_consumed)) id arg2){}; 21 22blk1 d4 = ^void (id arg1, id arg2) {}; // expected-error {{incompatible block pointer types initializing}} 23#else 24@interface Sub 25-(void) m:(id)p; // expected-note {{parameter declared here}} 26@end 27 28@interface Super : Sub 29-(void) m:(__attribute__((ns_consumed)) id)p; // expected-warning {{overriding method has mismatched ns_consumed attribute on its parameter}} 30@end 31#endif 32