43 lines
		
	
	
		
			822 B
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			43 lines
		
	
	
		
			822 B
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
// 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
 |