Skip to content

Commit

Permalink
[clang][Diagnostic][NFC] Simplify emitDiagnosticLoc
Browse files Browse the repository at this point in the history
We don't use the offset returned from SourceManager::getDecomposedLoc
here, so we might as well just use getFileID().

Differential Revision: https://reviews.llvm.org/D151093
  • Loading branch information
tbaederr committed May 31, 2023
1 parent 1c76548 commit c113cbb
Showing 1 changed file with 5 additions and 9 deletions.
14 changes: 5 additions & 9 deletions clang/lib/Frontend/TextDiagnostic.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -850,30 +850,26 @@ void TextDiagnostic::emitDiagnosticLoc(FullSourceLoc Loc, PresumedLoc PLoc,
if (DiagOpts->ShowSourceRanges && !Ranges.empty()) {
FileID CaretFileID = Loc.getExpansionLoc().getFileID();
bool PrintedRange = false;
const SourceManager &SM = Loc.getManager();

for (const auto &R : Ranges) {
// Ignore invalid ranges.
if (!R.isValid())
continue;

auto &SM = Loc.getManager();
SourceLocation B = SM.getExpansionLoc(R.getBegin());
CharSourceRange ERange = SM.getExpansionRange(R.getEnd());
SourceLocation E = ERange.getEnd();
bool IsTokenRange = ERange.isTokenRange();

std::pair<FileID, unsigned> BInfo = SM.getDecomposedLoc(B);
std::pair<FileID, unsigned> EInfo = SM.getDecomposedLoc(E);

// If the start or end of the range is in another file, just discard
// it.
if (BInfo.first != CaretFileID || EInfo.first != CaretFileID)
// If the start or end of the range is in another file, just
// discard it.
if (SM.getFileID(B) != CaretFileID || SM.getFileID(E) != CaretFileID)
continue;

// Add in the length of the token, so that we cover multi-char
// tokens.
unsigned TokSize = 0;
if (IsTokenRange)
if (ERange.isTokenRange())
TokSize = Lexer::MeasureTokenLength(E, SM, LangOpts);

FullSourceLoc BF(B, SM), EF(E, SM);
Expand Down

0 comments on commit c113cbb

Please sign in to comment.