forked from OSchip/llvm-project
				
			
		
			
				
	
	
		
			88 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			C
		
	
	
	
			
		
		
	
	
			88 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			C
		
	
	
	
| // RUN: %clang_cc1 %s -fsyntax-only -Wmicrosoft -verify -fms-extensions
 | |
| // expected-no-diagnostics
 | |
| 
 | |
| struct Type {
 | |
| };
 | |
| 
 | |
| void test_if_exists_stmts() {
 | |
|   int b = 0;
 | |
|   __if_exists(Type) {
 | |
|     b++;
 | |
|     b++;
 | |
|   }
 | |
|   __if_exists(Type_not) {
 | |
|     this will not compile.
 | |
|   }
 | |
|   __if_not_exists(Type) {
 | |
|     this will not compile.
 | |
|   }
 | |
|   __if_not_exists(Type_not) {
 | |
|     b++;
 | |
|     b++;
 | |
|   }
 | |
| }
 | |
| 
 | |
| int if_exists_creates_no_scope() {
 | |
|   __if_exists(Type) {
 | |
|     int x;  // 'x' is declared in the parent scope.
 | |
|   }
 | |
|   __if_not_exists(Type_not) {
 | |
|     x++;
 | |
|   }
 | |
|   return x;
 | |
| }
 | |
| 
 | |
| __if_exists(Type) {
 | |
|   int var23;
 | |
| }
 | |
| 
 | |
| __if_exists(Type_not) {
 | |
|   this will not compile.
 | |
| }
 | |
| 
 | |
| __if_not_exists(Type) {
 | |
|   this will not compile.
 | |
| }
 | |
| 
 | |
| __if_not_exists(Type_not) {
 | |
|   int var244;
 | |
| }
 | |
| 
 | |
| void test_if_exists_init_list() {
 | |
| 
 | |
|   int array1[] = {
 | |
|     0,
 | |
|     __if_exists(Type) {2, }
 | |
|     3
 | |
|   };
 | |
| 
 | |
|   int array2[] = {
 | |
|     0,
 | |
|     __if_exists(Type_not) { this will not compile }
 | |
|     3
 | |
|   };
 | |
| 
 | |
|   int array3[] = {
 | |
|     0,
 | |
|     __if_not_exists(Type_not) {2, }
 | |
|     3
 | |
|   };
 | |
| 
 | |
|   int array4[] = {
 | |
|     0,
 | |
|     __if_not_exists(Type) { this will not compile }
 | |
|     3
 | |
|   };
 | |
| 
 | |
| }
 | |
| 
 | |
| 
 | |
| void test_nested_if_exists() {
 | |
|   __if_exists(Type) {
 | |
|     int x = 42;
 | |
|     __if_not_exists(Type_not) {
 | |
|       x++;
 | |
|     }
 | |
|   }
 | |
| }
 |