Home | History | Annotate | Download | only in SemaObjCXX
      1 // RUN: %clang_cc1 -fsyntax-only -verify -fblocks -Wno-objc-root-class %s
      2 // radar 7562285
      3 
      4 typedef 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