forked from OSchip/llvm-project
char16_t and char32_t are defined via typedef in MSVC 11 RC. So introduce a way to disable keywords under Microsoft mode.
llvm-svn: 160612
This commit is contained in:
parent
c8acd7c96b
commit
0e2b84312f
|
@ -211,6 +211,8 @@ PUNCTUATOR(greatergreatergreater, ">>>")
|
|||
// KEYCXX0X - This is a C++ keyword introduced to C++ in C++0x
|
||||
// KEYGNU - This is a keyword if GNU extensions are enabled
|
||||
// KEYMS - This is a keyword if Microsoft extensions are enabled
|
||||
// KEYNOMS - This is a keyword that must never be enabled under
|
||||
// Microsoft mode
|
||||
// KEYOPENCL - This is a keyword in OpenCL
|
||||
// KEYALTIVEC - This is a keyword in AltiVec
|
||||
// KEYBORLAND - This is a keyword if Borland extensions are enabled
|
||||
|
@ -311,8 +313,8 @@ CXX_KEYWORD_OPERATOR(xor_eq , caretequal)
|
|||
// C++0x keywords
|
||||
KEYWORD(alignas , KEYCXX0X)
|
||||
KEYWORD(alignof , KEYCXX0X)
|
||||
KEYWORD(char16_t , KEYCXX0X)
|
||||
KEYWORD(char32_t , KEYCXX0X)
|
||||
KEYWORD(char16_t , KEYCXX0X|KEYNOMS)
|
||||
KEYWORD(char32_t , KEYCXX0X|KEYNOMS)
|
||||
KEYWORD(constexpr , KEYCXX0X)
|
||||
KEYWORD(decltype , KEYCXX0X)
|
||||
KEYWORD(noexcept , KEYCXX0X)
|
||||
|
|
|
@ -103,7 +103,8 @@ namespace {
|
|||
KEYOPENCL = 0x200,
|
||||
KEYC11 = 0x400,
|
||||
KEYARC = 0x800,
|
||||
KEYALL = 0x0fff
|
||||
KEYALL = 0x0fff,
|
||||
KEYNOMS = 0x1000
|
||||
};
|
||||
}
|
||||
|
||||
|
@ -136,6 +137,9 @@ static void AddKeyword(StringRef Keyword,
|
|||
else if (LangOpts.ObjC2 && (Flags & KEYARC)) AddResult = 2;
|
||||
else if (LangOpts.CPlusPlus && (Flags & KEYCXX0X)) AddResult = 3;
|
||||
|
||||
// Don't add this keyword under MicrosoftMode.
|
||||
if (LangOpts.MicrosoftMode && (Flags & KEYNOMS))
|
||||
return;
|
||||
// Don't add this keyword if disabled in this language.
|
||||
if (AddResult == 0) return;
|
||||
|
||||
|
|
|
@ -1,6 +1,8 @@
|
|||
// RUN: %clang_cc1 %s -triple i686-pc-win32 -fsyntax-only -std=c++11 -Wmicrosoft -verify -fms-compatibility -fexceptions -fcxx-exceptions
|
||||
|
||||
|
||||
typedef unsigned short char16_t;
|
||||
typedef unsigned int char32_t;
|
||||
|
||||
namespace ms_conversion_rules {
|
||||
|
||||
|
|
Loading…
Reference in New Issue