blob: 72f5283dea37734df9fe4272845fb44ad9275be6 [file] [log] [blame]
Fariborz Jahanianb351a7d2010-01-20 22:54:38 +00001// RUN: %clang_cc1 -fsyntax-only -verify -fblocks %s
2// radar 7562285
3
4typedef int (^blocktype)(int a, int b);
5
6@interface A {
7 A* a;
8 id b;
9 Class c;
10}
11- (blocktype)Meth;
12@end
13
14@implementation A
15- (blocktype)Meth {
16 if (b)
17 return (blocktype)b;
18 else if (a)
19 return (blocktype)a; // expected-error {{C-style cast from 'A *' to 'blocktype' (aka 'int (^)(int, int)') is not allowed}}
20 else
21 return (blocktype)c;
22}
23@end
Fariborz Jahanianf7c43fd2010-01-21 00:05:09 +000024
25@interface B {
26 blocktype a;
27 blocktype b;
28 blocktype c;
29}
30- (id)Meth;
31@end
32
33@implementation B
34- (id)Meth {
35 if (a)
36 return (A*)a; // expected-error {{C-style cast from 'blocktype' (aka 'int (^)(int, int)') to 'A *' is not allowed}}
37 if (b)
38 return (id)b;
39 if (c)
40 return (Class)b;
41}
42@end