forked from OSchip/llvm-project
				
			
		
			
				
	
	
		
			43 lines
		
	
	
		
			1022 B
		
	
	
	
		
			C
		
	
	
	
			
		
		
	
	
			43 lines
		
	
	
		
			1022 B
		
	
	
	
		
			C
		
	
	
	
| // 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;
 | |
| }
 | |
| 
 |