1 // RUN: %clang_cc1 -fsyntax-only -verify -fblocks -Wno-objc-root-class %s 2 // radar 7562285 3 4 typedef int (^blocktype)(int a, int b); 5 6 @interface A { 7 A* a; 8 id b; 9 Class c; 10 } 11 - (blocktype)Meth; 12 @end 13 14 @implementation A 15 - (blocktype)Meth { 16 if (b) 17 return (blocktype)b; 18 else if (a) 19 return (blocktype)a; // expected-error {{C-style cast from 'A *' to 'blocktype' (aka 'int (^)(int, int)') is not allowed}} 20 else 21 return (blocktype)c; 22 } 23 @end 24 25 @interface B { 26 blocktype a; 27 blocktype b; 28 blocktype c; 29 } 30 - (id)Meth; 31 @end 32 33 @implementation B 34 - (id)Meth { 35 if (a) 36 return (A*)a; // expected-error {{C-style cast from 'blocktype' (aka 'int (^)(int, int)') to 'A *' is not allowed}} 37 if (b) 38 return (id)b; 39 if (c) 40 return (Class)b; 41 } 42 @end 43