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