Home | History | Annotate | Download | only in Sema
      1 // RUN: %clang_cc1 %s -verify -fsyntax-only -fblocks
      2 // expected-no-diagnostics
      3 
      4 #include <stdarg.h>
      5 
      6 int 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