// 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
