summaryrefslogtreecommitdiffstats
path: root/clang/test/Preprocessor/cxx_oper_keyword.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'clang/test/Preprocessor/cxx_oper_keyword.cpp')
-rw-r--r--clang/test/Preprocessor/cxx_oper_keyword.cpp23
1 files changed, 19 insertions, 4 deletions
diff --git a/clang/test/Preprocessor/cxx_oper_keyword.cpp b/clang/test/Preprocessor/cxx_oper_keyword.cpp
index 3fc246dd6c2..5a4653f1a7a 100644
--- a/clang/test/Preprocessor/cxx_oper_keyword.cpp
+++ b/clang/test/Preprocessor/cxx_oper_keyword.cpp
@@ -1,7 +1,22 @@
-// RUN: not %clang_cc1 %s -E
-// RUN: %clang_cc1 %s -E -fno-operator-names
+// RUN: %clang_cc1 %s -E -verify -DOPERATOR_NAMES
+// RUN: %clang_cc1 %s -E -verify -fno-operator-names
-// Not valid in C++ unless -fno-operator-names is passed.
-#define and foo
+#ifndef OPERATOR_NAMES
+//expected-error@+3 {{token is not a valid binary operator in a preprocessor subexpression}}
+#endif
+// Valid because 'and' is a spelling of '&&'
+#if defined foo and bar
+#endif
+
+// Not valid in C++ unless -fno-operator-names is passed:
+#ifdef OPERATOR_NAMES
+//expected-error@+2 {{C++ operator 'and' cannot be used as a macro name}}
+#endif
+#define and foo
+#ifdef OPERATOR_NAMES
+//expected-error@+2 {{C++ operator 'and' cannot be used as a macro name}}
+#endif
+#if defined and
+#endif
OpenPOWER on IntegriCloud