| 123456789101112131415161718192021222324252627282930313233343536373839404142 |
- // RUN: %clang_cc1 %s -verify -fsyntax-only -fblocks
- // expected-no-diagnostics
- #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;
- }
|