text: // RUN: %clang_cc1 %s -fsyntax-only -Wmicrosoft -verify -fms-extensions
  // expected-no-diagnostics
  
  struct Type {
  };
  
  void test_if_exists_stmts(void) {
    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(void) {
    __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(void) {
  
    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(void) {
    __if_exists(Type) {
      int x = 42;
      __if_not_exists(Type_not) {
        x++;
      }
    }
  }
  