summaryrefslogtreecommitdiffstats
path: root/test/Parser
diff options
context:
space:
mode:
authorErich Keane <erich.keane@intel.com>2017-05-24 19:31:19 +0000
committerErich Keane <erich.keane@intel.com>2017-05-24 19:31:19 +0000
commitb28d2ee4c9f291941467723f7c5c48f47b0be951 (patch)
tree2430198440fd070be8f38bcc7c597c68c9c8e231 /test/Parser
parent3143081d4afe3c116a7f968e1b26c63b4d9c1938 (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.cpp6
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 {};