1// RUN: %clang_cc1 -fsyntax-only -verify -fblocks -Wno-objc-root-class %s 2// radar 7562285 3 4typedef 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