1 // RUN: %clang_cc1 %s -verify -fsyntax-only -fblocks
2 // expected-no-diagnostics
3
4 #include <stdarg.h>
5
main(int argc,char * argv[])6 int main(int argc, char *argv[]) {
7
8 long (^addthem)(const char *, ...) = ^long (const char *format, ...){
9 va_list argp;
10 const char *p;
11 int i;
12 char c;
13 double d;
14 long result = 0;
15 va_start(argp, format);
16 for (p = format; *p; p++) switch (*p) {
17 case 'i':
18 i = va_arg(argp, int);
19 result += i;
20 break;
21 case 'd':
22 d = va_arg(argp, double);
23 result += (int)d;
24 break;
25 case 'c':
26 c = va_arg(argp, int);
27 result += c;
28 break;
29 }
30 return result;
31 };
32 long testresult = addthem("ii", 10, 20);
33 if (testresult != 30) {
34 return 1;
35 }
36 testresult = addthem("idc", 30, 40.0, 'a');
37 if (testresult != (70+'a')) {
38 return 1;
39 }
40 return 0;
41 }
42
43