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++;
 | 
						|
    }
 | 
						|
  }
 | 
						|
}
 |