2012-04-07 02:12:22 +08:00
|
|
|
// RUN: %clang_cc1 -fsyntax-only -verify -fblocks -Wno-objc-root-class %s
|
2010-01-21 06:54:38 +08:00
|
|
|
// 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
|
2010-01-21 08:05:09 +08:00
|
|
|
|
|
|
|
@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
|