blob: 125ebdb257057f7d83abe9ee62fc09d9bd1fee16 [file] [log] [blame]
/* APPLE LOCAL file radar 5732232 - blocks */
/* { dg-do compile } */
/* { dg-options "-fblocks" } */
void donotwarn();
int (^IFP) ();
int (^II) (int);
int test1() {
int (^PFR) (int) = 0; // OK
PFR = II; // OK
if (PFR == II) // OK
donotwarn();
if (PFR == IFP) /* { dg-error "comparison of distinct block types" } */
donotwarn();
if (PFR == (int (^) (int))IFP) // OK
donotwarn();
if (PFR == 0) // OK
donotwarn();
if (PFR) // OK
donotwarn();
if (!PFR) // OK
donotwarn();
return PFR != IFP; /* { dg-error "comparison of distinct block types" } */
}
int test2(double (^S)()) {
double (^I)(int) = (void*) S;
(void*)I = (void *)S; /* { dg-warning "target of assignment not really an lvalue; this will be a hard error in the future" } */
void *pv = I;
pv = S;
I(1);
return (void*)I == (void *)S;
}
int^ x; /* { dg-error "block pointer to non-function type is invalid" } */
int^^ x1; /* { dg-error "block pointer to non-function type is invalid" } */
int test3() {
char *^ y; /* { dg-error "block pointer to non-function type is invalid" } */
}