diff options
| author | Reid Kleckner <reid@kleckner.net> | 2014-06-25 00:28:35 +0000 |
|---|---|---|
| committer | Reid Kleckner <reid@kleckner.net> | 2014-06-25 00:28:35 +0000 |
| commit | 6d8d22ae404cc857782c422e1f53c7d4a3d9311f (patch) | |
| tree | 862a9cb7845ce4b8109f22f7d7df4f9bb62c91a7 /clang/test | |
| parent | 624ac24da95211b7883362acbce37594aeccc3b7 (diff) | |
| download | bcm5719-llvm-6d8d22ae404cc857782c422e1f53c7d4a3d9311f.tar.gz bcm5719-llvm-6d8d22ae404cc857782c422e1f53c7d4a3d9311f.zip | |
Fix parsing nested __if_exists blocks
Rather than having kw___if_exists be a special case of
ParseCompoundStatementBody, we can look for kw___if_exists in the big
switch over for valid statement tokens in ParseStatementOrDeclaration.
Nested __if_exists blocks are used in the DECLARE_REGISTRY_RESOURCEID
macro from atlcom.h.
llvm-svn: 211654
Diffstat (limited to 'clang/test')
| -rw-r--r-- | clang/test/Parser/ms-if-exists.cpp | 18 |
1 files changed, 16 insertions, 2 deletions
diff --git a/clang/test/Parser/ms-if-exists.cpp b/clang/test/Parser/ms-if-exists.cpp index 2d4a957f127..79cc571a357 100644 --- a/clang/test/Parser/ms-if-exists.cpp +++ b/clang/test/Parser/ms-if-exists.cpp @@ -1,7 +1,5 @@ // RUN: %clang_cc1 %s -std=c++11 -fsyntax-only -Wmicrosoft -verify -fms-extensions -// expected-no-diagnostics - class MayExist { private: typedef int Type; @@ -101,3 +99,19 @@ class IfExistsClassScope { 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; + } +} |

