forked from OSchip/llvm-project
30 lines
703 B
C
30 lines
703 B
C
// RUN: clang %s -fsyntax-only -verify -fblocks
|
|
|
|
void take(void*);
|
|
|
|
void test() {
|
|
take(^(int x){});
|
|
take(^(int x, int y){});
|
|
take(^(int x, int y){});
|
|
take(^(int x, int x){}); // expected-error {{redefinition of parameter 'x'}}
|
|
|
|
|
|
take(^(int x) { return x+1; });
|
|
|
|
int (^CP)(int) = ^(int x) { return x*x; };
|
|
take(CP);
|
|
|
|
int arg;
|
|
^{return 1;}();
|
|
^{return 2;}(arg); // expected-error {{too many arguments to block call}}
|
|
^(void){return 3;}(1); // expected-error {{too many arguments to block call}}
|
|
^(){return 4;}(arg); // C style (...), ok.
|
|
^(int x, ...){return 5;}(arg, arg); // Explicit varargs, ok.
|
|
}
|
|
|
|
int main(int argc) {
|
|
^(int argCount) {
|
|
argCount = 3;
|
|
}(argc);
|
|
}
|