43 lines · c
1// RUN: %clang_cc1 %s -verify -fsyntax-only -fblocks2// expected-no-diagnostics3 4#include <stdarg.h>5 6int 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