]> granicus.if.org Git - clang/commitdiff
Make the bad paste diagnostic print the entire pasted token.
authorEli Friedman <eli.friedman@gmail.com>
Wed, 27 May 2009 22:00:37 +0000 (22:00 +0000)
committerEli Friedman <eli.friedman@gmail.com>
Wed, 27 May 2009 22:00:37 +0000 (22:00 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72497 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Lex/TokenLexer.cpp
test/Preprocessor/macro_paste_bad.c

index 5675f3f7c0ed1803e65285144ce1b8bff13719bc..318c57cc5f26f9d56854d8280e9dbcfc47ca3dda 100644 (file)
@@ -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;
index b43d70b0c4e47d6425bfd6558c723425349330c3..c3b6179021a8d9ad92300cea3a480739da803837 100644 (file)
@@ -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