diff options
Diffstat (limited to 'lib/Lex/TokenConcatenation.cpp')
-rw-r--r-- | lib/Lex/TokenConcatenation.cpp | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/lib/Lex/TokenConcatenation.cpp b/lib/Lex/TokenConcatenation.cpp index 92edca7be4..15637996b4 100644 --- a/lib/Lex/TokenConcatenation.cpp +++ b/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; |