43 lines
822 B
Text
43 lines
822 B
Text
|
// 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
|