summaryrefslogtreecommitdiffstats
path: root/clang-tools-extra/clang-tidy/utils/LexerUtils.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'clang-tools-extra/clang-tidy/utils/LexerUtils.cpp')
-rw-r--r--clang-tools-extra/clang-tidy/utils/LexerUtils.cpp7
1 files changed, 7 insertions, 0 deletions
diff --git a/clang-tools-extra/clang-tidy/utils/LexerUtils.cpp b/clang-tools-extra/clang-tidy/utils/LexerUtils.cpp
index 17838fe577f..79d2499fcb9 100644
--- a/clang-tools-extra/clang-tidy/utils/LexerUtils.cpp
+++ b/clang-tools-extra/clang-tidy/utils/LexerUtils.cpp
@@ -17,7 +17,11 @@ Token getPreviousToken(SourceLocation Location, const SourceManager &SM,
const LangOptions &LangOpts, bool SkipComments) {
Token Token;
Token.setKind(tok::unknown);
+
Location = Location.getLocWithOffset(-1);
+ if (Location.isInvalid())
+ return Token;
+
auto StartOfFile = SM.getLocForStartOfFile(SM.getFileID(Location));
while (Location != StartOfFile) {
Location = Lexer::GetBeginningOfToken(Location, SM, LangOpts);
@@ -47,6 +51,9 @@ SourceLocation findPreviousTokenKind(SourceLocation Start,
const SourceManager &SM,
const LangOptions &LangOpts,
tok::TokenKind TK) {
+ if (Start.isInvalid() || Start.isMacroID())
+ return SourceLocation();
+
while (true) {
SourceLocation L = findPreviousTokenStart(Start, SM, LangOpts);
if (L.isInvalid() || L.isMacroID())
OpenPOWER on IntegriCloud