diff options
author | Chris Lattner <sabre@nondot.org> | 2009-04-21 23:28:41 +0000 |
---|---|---|
committer | Chris Lattner <sabre@nondot.org> | 2009-04-21 23:28:41 +0000 |
commit | ca515ccb49dda9f09fe714fb336ec5119cd10851 (patch) | |
tree | 8c183723ce20c56324e20d550ba1038b46f6c42b /clang/lib/Lex/TokenConcatenation.cpp | |
parent | c8e236278e60cee9a612d5a5c49625661025223b (diff) | |
download | bcm5719-llvm-ca515ccb49dda9f09fe714fb336ec5119cd10851.tar.gz bcm5719-llvm-ca515ccb49dda9f09fe714fb336ec5119cd10851.zip |
apply Eli's patch to fix PR4008, with a testcase. Thanks Eli!
llvm-svn: 69750
Diffstat (limited to 'clang/lib/Lex/TokenConcatenation.cpp')
-rw-r--r-- | clang/lib/Lex/TokenConcatenation.cpp | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/clang/lib/Lex/TokenConcatenation.cpp b/clang/lib/Lex/TokenConcatenation.cpp index 92edca7be43..15637996b41 100644 --- a/clang/lib/Lex/TokenConcatenation.cpp +++ b/clang/lib/Lex/TokenConcatenation.cpp @@ -126,6 +126,14 @@ static char GetFirstChar(Preprocessor &PP, const Token &Tok) { /// don't want to track enough to tell "x.." from "...". bool TokenConcatenation::AvoidConcat(const Token &PrevTok, const Token &Tok) const { + // First, check to see if the tokens were directly adjacent in the original + // source. If they were, it must be okay to stick them together: if there + // were an issue, the tokens would have been lexed differently. + if (PrevTok.getLocation().isFileID() && Tok.getLocation().isFileID() && + PrevTok.getLocation().getFileLocWithOffset(PrevTok.getLength()) == + Tok.getLocation()) + return false; + tok::TokenKind PrevKind = PrevTok.getKind(); if (PrevTok.getIdentifierInfo()) // Language keyword or named operator. PrevKind = tok::identifier; |