Aaron, you might be right... but still, I doubt MS will fix it any time soon -- I suppose enough code already depends on this.
Either way, it's up to Reid, as Windows maintainer, to decide whatever we want this to be supported in clang or not. Yours, Andrey On Fri, Feb 19, 2016 at 4:43 PM, Aaron Ballman <aa...@aaronballman.com> wrote: > On Fri, Feb 19, 2016 at 8:08 AM, Andrey Bokhanko via cfe-commits > <cfe-commits@lists.llvm.org> wrote: >> andreybokhanko created this revision. >> andreybokhanko added reviewers: rnk, majnemer, thakis. >> andreybokhanko added a subscriber: cfe-commits. >> >> MS compiler recognizes "static_assert" keyword is C mode as well, while >> clang-cl doesn't. This patch fixes this. > > Are we sure this isn't an MS bug? I notice that they do not support > _Static_assert as a spelling under their C mode, either. Well, that's > not entirely true, they support _Static_assert(); (!!!!) but not > _Static_assert(0, "something"); (???) > (https://connect.microsoft.com/VisualStudio/feedback/details/2379885/static-assert-in-c-mode) > > ~Aaron > >> >> http://reviews.llvm.org/D17444 >> >> Files: >> include/clang/Basic/TokenKinds.def >> test/Lexer/keywords_test.cpp >> >> Index: include/clang/Basic/TokenKinds.def >> =================================================================== >> --- include/clang/Basic/TokenKinds.def >> +++ include/clang/Basic/TokenKinds.def >> @@ -354,7 +354,7 @@ >> CXX11_KEYWORD(decltype , 0) >> CXX11_KEYWORD(noexcept , 0) >> CXX11_KEYWORD(nullptr , 0) >> -CXX11_KEYWORD(static_assert , 0) >> +CXX11_KEYWORD(static_assert , KEYMS) >> CXX11_KEYWORD(thread_local , 0) >> >> // C++ concepts TS keywords >> Index: test/Lexer/keywords_test.cpp >> =================================================================== >> --- test/Lexer/keywords_test.cpp >> +++ test/Lexer/keywords_test.cpp >> @@ -2,17 +2,17 @@ >> // RUN: %clang_cc1 -std=c++11 -DCXX11 -fsyntax-only %s >> // RUN: %clang_cc1 -std=c++14 -fconcepts-ts -DCXX11 -DCONCEPTS >> -fsyntax-only %s >> // RUN: %clang_cc1 -std=c++03 -fdeclspec -DDECLSPEC -fsyntax-only %s >> -// RUN: %clang_cc1 -std=c++03 -fms-extensions -DDECLSPEC -fsyntax-only %s >> +// RUN: %clang_cc1 -std=c++03 -fms-extensions -DMS -DDECLSPEC -fsyntax-only >> %s >> // RUN: %clang_cc1 -std=c++03 -fborland-extensions -DDECLSPEC -fsyntax-only >> %s >> -// RUN: %clang_cc1 -std=c++03 -fms-extensions -fno-declspec -fsyntax-only %s >> +// RUN: %clang_cc1 -std=c++03 -fms-extensions -DMS -fno-declspec >> -fsyntax-only %s >> // RUN: %clang_cc1 -std=c++03 -fborland-extensions -fno-declspec >> -fsyntax-only %s >> // RUN: %clang_cc1 -std=c++03 -fno-declspec -fdeclspec -DDECLSPEC >> -fsyntax-only %s >> // RUN: %clang_cc1 -std=c++03 -fdeclspec -fno-declspec -fsyntax-only %s >> -// RUN: %clang_cc1 -std=c++03 -fms-extensions -fno-declspec -fdeclspec >> -DDECLSPEC -fsyntax-only %s >> -// RUN: %clang_cc1 -std=c++03 -fms-extensions -fdeclspec -fno-declspec >> -fsyntax-only %s >> -// RUN: %clang -std=c++03 -target i686-windows-msvc -DDECLSPEC >> -fsyntax-only %s >> +// RUN: %clang_cc1 -std=c++03 -fms-extensions -DMS -fno-declspec -fdeclspec >> -DDECLSPEC -fsyntax-only %s >> +// RUN: %clang_cc1 -std=c++03 -fms-extensions -DMS -fdeclspec -fno-declspec >> -fsyntax-only %s >> +// RUN: %clang -std=c++03 -target i686-windows-msvc -DMS -DDECLSPEC >> -fsyntax-only %s >> // RUN: %clang -std=c++03 -target x86_64-scei-ps4 -DDECLSPEC -fsyntax-only >> %s >> -// RUN: %clang -std=c++03 -target i686-windows-msvc -fno-declspec >> -fsyntax-only %s >> +// RUN: %clang -std=c++03 -target i686-windows-msvc -DMS -fno-declspec >> -fsyntax-only %s >> // RUN: %clang -std=c++03 -target x86_64-scei-ps4 -fno-declspec >> -fsyntax-only %s >> >> #define IS_KEYWORD(NAME) _Static_assert(!__is_identifier(NAME), #NAME) >> @@ -50,7 +50,12 @@ >> CXX11_TYPE(char32_t); >> CXX11_KEYWORD(constexpr); >> CXX11_KEYWORD(noexcept); >> +#ifndef MS >> CXX11_KEYWORD(static_assert); >> +#else >> +// MS compiler recognizes static_assert in all modes. So should we. >> +IS_KEYWORD(static_assert); >> +#endif >> CXX11_KEYWORD(thread_local); >> >> // Concepts TS keywords >> >> >> >> _______________________________________________ >> cfe-commits mailing list >> cfe-commits@lists.llvm.org >> http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits >> _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits