| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117 |
- // RUN: %clang_cc1 %s -std=c++11 -fsyntax-only -Wmicrosoft -verify -fms-extensions
- class MayExist {
- private:
- typedef int Type;
- };
- void test_if_exists_stmts() {
- int b = 0;
- __if_exists(MayExist::Type) {
- b++;
- b++;
- }
- __if_exists(MayExist::Type_not) {
- this will not compile.
- }
- __if_not_exists(MayExist::Type) {
- this will not compile.
- }
- __if_not_exists(MayExist::Type_not) {
- b++;
- b++;
- }
- }
- int if_exists_creates_no_scope() {
- __if_exists(MayExist::Type) {
- int x; // 'x' is declared in the parent scope.
- }
- __if_not_exists(MayExist::Type_not) {
- x++;
- }
- return x;
- }
- __if_exists(MayExist::Type) {
- int var23;
- }
- __if_exists(MayExist::Type_not) {
- this will not compile.
- }
- __if_not_exists(MayExist::Type) {
- this will not compile.
- }
- __if_not_exists(MayExist::Type_not) {
- int var244;
- }
- void test_if_exists_init_list() {
- int array1[] = {
- 0,
- __if_exists(MayExist::Type) {2, }
- 3
- };
- int array2[] = {
- 0,
- __if_exists(MayExist::Type_not) { this will not compile }
- 3
- };
- int array3[] = {
- 0,
- __if_not_exists(MayExist::Type_not) {2, }
- 3
- };
- int array4[] = {
- 0,
- __if_not_exists(MayExist::Type) { this will not compile }
- 3
- };
- }
- class IfExistsClassScope {
- __if_exists(MayExist::Type) {
- // __if_exists, __if_not_exists can nest
- __if_not_exists(MayExist::Type_not) {
- int var123;
- }
- int var23;
- }
- __if_exists(MayExist::Type_not) {
- this will not compile.
- }
- __if_not_exists(MayExist::Type) {
- this will not compile.
- }
- __if_not_exists(MayExist::Type_not) {
- int var244;
- }
- };
- void test_nested_if_exists() {
- __if_exists(MayExist::Type) {
- int x = 42;
- __if_not_exists(MayExist::Type_not) {
- x++;
- }
- }
- }
- void test_attribute_on_if_exists() {
- [[clang::fallthrough]] // expected-error {{an attribute list cannot appear here}}
- __if_exists(MayExist::Type) {
- int x;
- }
- }
|