summaryrefslogtreecommitdiff
path: root/test/Headers/ms-cppoperkey1.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'test/Headers/ms-cppoperkey1.cpp')
-rw-r--r--test/Headers/ms-cppoperkey1.cpp27
1 files changed, 27 insertions, 0 deletions
diff --git a/test/Headers/ms-cppoperkey1.cpp b/test/Headers/ms-cppoperkey1.cpp
new file mode 100644
index 000000000000..c03efc9dacde
--- /dev/null
+++ b/test/Headers/ms-cppoperkey1.cpp
@@ -0,0 +1,27 @@
+// RUN: %clang_cc1 \
+// RUN: -fms-compatibility -x c++-cpp-output \
+// RUN: -ffreestanding -fsyntax-only -Werror \
+// RUN: %s -verify
+
+
+# 1 "t.cpp"
+# 1 "query.h" 1 3 4
+// MS header <query.h> uses operator keyword as field name.
+// Compile without syntax errors.
+struct tagRESTRICTION
+ {
+ union _URes
+ {
+ int or; // Note use of cpp operator token
+ } res;
+ };
+ ;
+
+int aa ( int x)
+{
+ // In system header code, treat operator keyword as identifier.
+ if ( // expected-note{{to match this '('}}
+ x>1 or x<0) return 1; // expected-error{{expected ')'}}
+ else return 0;
+}
+