// 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; | |
} | |