f4a2713ac8
Change-Id: Ia40e9ffdf29b5dab2f122f673ff6802a58bc690f
42 lines
822 B
Text
42 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
|