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