/* 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 declaration" "" { 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);   /* { dg-error "too many arguments to block call" } */
  ^(int x, ...){return 5;}(arg, arg);   /* Explicit varargs, ok. */
}
