diff options
author | Erich Keane <erich.keane@intel.com> | 2017-05-24 19:31:19 +0000 |
---|---|---|
committer | Erich Keane <erich.keane@intel.com> | 2017-05-24 19:31:19 +0000 |
commit | b28d2ee4c9f291941467723f7c5c48f47b0be951 (patch) | |
tree | 2430198440fd070be8f38bcc7c597c68c9c8e231 /test/Parser | |
parent | 3143081d4afe3c116a7f968e1b26c63b4d9c1938 (diff) |
For Microsoft compatibility, set fno_operator_names
There's a Microsoft header in the Windows SDK which won't
compile with clang because it uses an operator name (and)
as a field name. This patch allows that file to compile by
setting the option which disables operator names.
The header which doesn't compile <Query.h> C:/Program Files (x86)/
Windows Kits/10/include/10.0.14393.0/um\Query.h:259:40:
error: expected member name or ';' after declaration specifiers
/* [case()] */ NODERESTRICTION or;
~~~~~~~~~~~~~~~ ^
1 error generated.
Contributed for Melanie Blower
Differential Revision:https://reviews.llvm.org/D33505
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@303798 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'test/Parser')
-rw-r--r-- | test/Parser/MicrosoftExtensions.cpp | 6 |
1 files changed, 2 insertions, 4 deletions
diff --git a/test/Parser/MicrosoftExtensions.cpp b/test/Parser/MicrosoftExtensions.cpp index 74f4bb3268..aabf3bf15a 100644 --- a/test/Parser/MicrosoftExtensions.cpp +++ b/test/Parser/MicrosoftExtensions.cpp @@ -261,9 +261,8 @@ int __identifier(else} = __identifier(for); // expected-error {{missing ')' afte #define identifier_weird(x) __identifier(x int k = identifier_weird(if)); // expected-error {{use of undeclared identifier 'if'}} -// This is a bit weird, but the alternative tokens aren't keywords, and this -// behavior matches MSVC. FIXME: Consider supporting this anyway. -extern int __identifier(and) r; // expected-error {{cannot convert '&&' token to an identifier}} +// 'and' is not an operator name with Microsoft compatibility. +extern int __identifier(and) r; // expected-error {{expected ';' after top level declarator}} void f() { __identifier(() // expected-error {{cannot convert '(' token to an identifier}} @@ -355,7 +354,6 @@ void TestProperty() { ++sp.V11; } -//expected-warning@+1 {{C++ operator 'and' (aka '&&') used as a macro name}} #define and foo struct __declspec(uuid("00000000-0000-0000-C000-000000000046")) __declspec(novtable) IUnknown {}; |