// RUN: %clang_cc1 -fsyntax-only -verify -fblocks -Wno-objc-root-class %s | |
// radar 7562285 | |
typedef int (^blocktype)(int a, int b); | |
@interface A { | |
A* a; | |
id b; | |
Class c; | |
} | |
- (blocktype)Meth; | |
@end | |
@implementation A | |
- (blocktype)Meth { | |
if (b) | |
return (blocktype)b; | |
else if (a) | |
return (blocktype)a; // expected-error {{C-style cast from 'A *' to 'blocktype' (aka 'int (^)(int, int)') is not allowed}} | |
else | |
return (blocktype)c; | |
} | |
@end | |
@interface B { | |
blocktype a; | |
blocktype b; | |
blocktype c; | |
} | |
- (id)Meth; | |
@end | |
@implementation B | |
- (id)Meth { | |
if (a) | |
return (A*)a; // expected-error {{C-style cast from 'blocktype' (aka 'int (^)(int, int)') to 'A *' is not allowed}} | |
if (b) | |
return (id)b; | |
if (c) | |
return (Class)b; | |
} | |
@end |