diff options
Diffstat (limited to 'test/Parser/ms-if-exists.c')
-rw-r--r-- | test/Parser/ms-if-exists.c | 87 |
1 files changed, 87 insertions, 0 deletions
diff --git a/test/Parser/ms-if-exists.c b/test/Parser/ms-if-exists.c new file mode 100644 index 0000000..7dd2054 --- /dev/null +++ b/test/Parser/ms-if-exists.c @@ -0,0 +1,87 @@ +// 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++; + } + } +} |