blob: 6a1898da47e77c692704f4e8df8f042faa0d921d [file] [log] [blame]
/* APPLE LOCAL file radar 5732232 - blocks */
/* { dg-do compile } */
/* { dg-options "-fblocks" } */
void take(void*);
void test() {
take(^(int x){});
take(^(int x, int y){});
take(^(int x, int y){});
take(^(int x, int x){}); /* { dg-error "redefinition of parameter" } */
/* { dg-error "previous definition" "" { target *-*-* } 11 } */
take(^(int x) { return x+1; });
int (^CP)(int) = ^(int x) { return x*x; };
take(CP);
int arg;
^{return 1;}();
^{return 2;}(arg); /* { dg-error "too many arguments to block call" } */
^(void){return 3;}(1); /* { dg-error "too many arguments to block call" } */
^(){return 4;}(arg); /* C style (...), ok. */
^(int x, ...){return 5;}(arg, arg); /* Explicit varargs, ok. */
}