From 96d93907eb84ac16eea246f459fe961a7c78c8ac Mon Sep 17 00:00:00 2001 From: Andy Gibbs Date: Thu, 18 Apr 2013 16:49:37 +0000 Subject: [PATCH] Dropped the parentheses for #pragma message and its kin in the -E output generator. This was a suggestion by Jordan Rose since the documented format for these pragmas is without the parentheses. At the same time, I've increased test coverage too for the preprocessed output. llvm-svn: 179771 --- .../lib/Frontend/PrintPreprocessedOutput.cpp | 8 +++----- clang/test/Lexer/pragma-message2.c | 19 +++++++++++++++++++ clang/test/Lexer/pragma-operators.cpp | 2 +- 3 files changed, 23 insertions(+), 6 deletions(-) create mode 100644 clang/test/Lexer/pragma-message2.c diff --git a/clang/lib/Frontend/PrintPreprocessedOutput.cpp b/clang/lib/Frontend/PrintPreprocessedOutput.cpp index 61f2b9e28842..6d7a1db7379e 100644 --- a/clang/lib/Frontend/PrintPreprocessedOutput.cpp +++ b/clang/lib/Frontend/PrintPreprocessedOutput.cpp @@ -419,13 +419,13 @@ void PrintPPOutputPPCallbacks::PragmaMessage(SourceLocation Loc, OS << Namespace << ' '; switch (Kind) { case PMK_Message: - OS << "message(\""; + OS << "message \""; break; case PMK_Warning: - OS << "warning(\""; + OS << "warning \""; break; case PMK_Error: - OS << "error(\""; + OS << "error \""; break; } @@ -440,8 +440,6 @@ void PrintPPOutputPPCallbacks::PragmaMessage(SourceLocation Loc, << (char)('0'+ ((Char >> 0) & 7)); } OS << '"'; - - OS << ')'; setEmittedDirectiveOnThisLine(); } diff --git a/clang/test/Lexer/pragma-message2.c b/clang/test/Lexer/pragma-message2.c new file mode 100644 index 000000000000..4b4078243b2b --- /dev/null +++ b/clang/test/Lexer/pragma-message2.c @@ -0,0 +1,19 @@ +// RUN: %clang_cc1 -E -Werror -verify %s 2>&1 | FileCheck %s + +#pragma message "\\test" // expected-warning {{\test}} +// CHECK: #pragma message "\134test" + +#pragma message("\\test") // expected-warning {{\test}} +// CHECK: #pragma message "\134test" + +#pragma GCC warning "\"" "te" "st" "\"" // expected-warning {{"test"}} +// CHECK: #pragma GCC warning "\042test\042" + +#pragma GCC warning("\"" "te" "st" "\"") // expected-warning {{"test"}} +// CHECK: #pragma GCC warning "\042test\042" + +#pragma GCC error "" "[ ]" "" // expected-error {{[ ]}} +// CHECK: #pragma GCC error "[\011]" + +#pragma GCC error("" "[ ]" "") // expected-error {{[ ]}} +// CHECK: #pragma GCC error "[\011]" diff --git a/clang/test/Lexer/pragma-operators.cpp b/clang/test/Lexer/pragma-operators.cpp index 6a5a498a151f..7402f9f8c4bb 100644 --- a/clang/test/Lexer/pragma-operators.cpp +++ b/clang/test/Lexer/pragma-operators.cpp @@ -32,6 +32,6 @@ B(foo) // CHECK: #pragma comment(lib, "libfoo") // CHECK: #pragma clang diagnostic ignored "-Wunused" // CHECK: #pragma clang diagnostic error "-Wunused" -// CHECK: #pragma message("\042Hello\042, world!") +// CHECK: #pragma message "\042Hello\042, world!" // CHECK: 0; int n = pragma_L pragma_u8 pragma_u pragma_U pragma_R pragma_UR pragma_hello 0;