summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEli Friedman <eli.friedman@gmail.com>2009-05-27 22:00:37 +0000
committerEli Friedman <eli.friedman@gmail.com>2009-05-27 22:00:37 +0000
commit54eb224c3b46e58f603f1447d92d2d9c94b25d48 (patch)
tree40966003084c733dd8b8fbb84d78fd8fed79654e
parent4d1823680d41578e398cc08b017faaca1f923e5d (diff)
downloadbcm5719-llvm-54eb224c3b46e58f603f1447d92d2d9c94b25d48.tar.gz
bcm5719-llvm-54eb224c3b46e58f603f1447d92d2d9c94b25d48.zip
Make the bad paste diagnostic print the entire pasted token.
llvm-svn: 72497
-rw-r--r--clang/lib/Lex/TokenLexer.cpp2
-rw-r--r--clang/test/Preprocessor/macro_paste_bad.c4
2 files changed, 4 insertions, 2 deletions
diff --git a/clang/lib/Lex/TokenLexer.cpp b/clang/lib/Lex/TokenLexer.cpp
index 5675f3f7c0e..318c57cc5f2 100644
--- a/clang/lib/Lex/TokenLexer.cpp
+++ b/clang/lib/Lex/TokenLexer.cpp
@@ -473,7 +473,7 @@ bool TokenLexer::PasteTokens(Token &Tok) {
// Do not emit the warning when preprocessing assembler code.
if (!PP.getLangOptions().AsmPreprocessor)
PP.Diag(PasteOpLoc, diag::err_pp_bad_paste)
- << std::string(Buffer.begin(), Buffer.end()-1);
+ << std::string(Buffer.begin(), Buffer.end());
// Do not consume the RHS.
--CurToken;
diff --git a/clang/test/Preprocessor/macro_paste_bad.c b/clang/test/Preprocessor/macro_paste_bad.c
index b43d70b0c4e..c3b6179021a 100644
--- a/clang/test/Preprocessor/macro_paste_bad.c
+++ b/clang/test/Preprocessor/macro_paste_bad.c
@@ -1,7 +1,9 @@
// RUN: clang-cc -Eonly -verify -pedantic %s
// pasting ""x"" and ""+"" does not give a valid preprocessing token
-#define XYZ x ## + // expected-error {{pasting formed 'x', an invalid preprocessing token}}
+#define XYZ x ## + // expected-error {{pasting formed 'x+', an invalid preprocessing token}}
XYZ
+#define XXYZ . ## test // expected-error {{pasting formed '.test', an invalid preprocessing token}}
+XXYZ
// GCC PR 20077
OpenPOWER on IntegriCloud