• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1// RUN: %clang_cc1 -fsyntax-only -verify -fblocks -Wno-objc-root-class %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
24
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
43