summaryrefslogtreecommitdiffstats
path: root/clang/test/Preprocessor/warning_tests.c
diff options
context:
space:
mode:
authorAndy Gibbs <andyg1001@hotmail.co.uk>2012-11-17 19:15:38 +0000
committerAndy Gibbs <andyg1001@hotmail.co.uk>2012-11-17 19:15:38 +0000
commit58905d251bc053ea836183080c7b0a11577c0fb0 (patch)
treeb32a10eaa0f1f4381f9e1171c580cf776458b925 /clang/test/Preprocessor/warning_tests.c
parentf591982bb2908a80be2aebc52c98d9befc9b5937 (diff)
downloadbcm5719-llvm-58905d251bc053ea836183080c7b0a11577c0fb0.tar.gz
bcm5719-llvm-58905d251bc053ea836183080c7b0a11577c0fb0.zip
Refactored duplicate string literal lexing code within Preprocessor, into a
common LexStringLiteral function. In doing so, some consistency problems have been ironed out (e.g. where the first token in the string literal was lexed with macro expansion, but subsequent ones were not) and also an erroneous diagnostic has been corrected. LexStringLiteral is complemented by a FinishLexStringLiteral function which can be used in the situation where the first token of the string literal has already been lexed. llvm-svn: 168266
Diffstat (limited to 'clang/test/Preprocessor/warning_tests.c')
-rw-r--r--clang/test/Preprocessor/warning_tests.c25
1 files changed, 24 insertions, 1 deletions
diff --git a/clang/test/Preprocessor/warning_tests.c b/clang/test/Preprocessor/warning_tests.c
index ac0b37b645a..77b84562694 100644
--- a/clang/test/Preprocessor/warning_tests.c
+++ b/clang/test/Preprocessor/warning_tests.c
@@ -11,7 +11,7 @@
#warning Should have -Wparentheses
#endif
-// expected-error@+2 {{builtin warning check macro requires a parenthesized string}}
+// expected-error@+2 {{expected string literal}}
// expected-error@+1 {{expected value in expression}}
#if __has_warning(-Wfoo)
#endif
@@ -21,3 +21,26 @@
#else
#warning Not a valid warning flag
#endif
+
+// expected-error@+2 {{builtin warning check macro requires a parenthesized string}}
+// expected-error@+1 {{invalid token}}
+#if __has_warning "not valid"
+#endif
+
+// Macro expansion does not occur in the parameter to __has_warning
+// (as is also expected behaviour for ordinary macros), so the
+// following should not expand:
+
+#define MY_ALIAS "-Wparentheses"
+
+// expected-error@+1 2{{expected}}
+#if __has_warning(MY_ALIAS)
+#error Alias expansion not allowed
+#endif
+
+// But deferring should expand:
+#define HAS_WARNING(X) __has_warning(X)
+
+#if !HAS_WARNING(MY_ALIAS)
+#error Expansion should have occurred
+#endif
OpenPOWER on IntegriCloud