| // RUN: %clang_cc1 %s -verify -fsyntax-only -fblocks |
| |
| #include <stdarg.h> |
| |
| int main(int argc, char *argv[]) { |
| |
| long (^addthem)(const char *, ...) = ^long (const char *format, ...){ |
| va_list argp; |
| const char *p; |
| int i; |
| char c; |
| double d; |
| long result = 0; |
| va_start(argp, format); |
| for (p = format; *p; p++) switch (*p) { |
| case 'i': |
| i = va_arg(argp, int); |
| result += i; |
| break; |
| case 'd': |
| d = va_arg(argp, double); |
| result += (int)d; |
| break; |
| case 'c': |
| c = va_arg(argp, int); |
| result += c; |
| break; |
| } |
| return result; |
| }; |
| long testresult = addthem("ii", 10, 20); |
| if (testresult != 30) { |
| return 1; |
| } |
| testresult = addthem("idc", 30, 40.0, 'a'); |
| if (testresult != (70+'a')) { |
| return 1; |
| } |
| return 0; |
| } |
| |