summaryrefslogtreecommitdiffstats
path: root/clang/lib/Driver/TextDiagnosticPrinter.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'clang/lib/Driver/TextDiagnosticPrinter.cpp')
-rw-r--r--clang/lib/Driver/TextDiagnosticPrinter.cpp16
1 files changed, 9 insertions, 7 deletions
diff --git a/clang/lib/Driver/TextDiagnosticPrinter.cpp b/clang/lib/Driver/TextDiagnosticPrinter.cpp
index 8523723278f..4080b748ad5 100644
--- a/clang/lib/Driver/TextDiagnosticPrinter.cpp
+++ b/clang/lib/Driver/TextDiagnosticPrinter.cpp
@@ -36,8 +36,8 @@ PrintIncludeStack(FullSourceLoc Pos) {
/// HighlightRange - Given a SourceRange and a line number, highlight (with ~'s)
/// any characters in LineNo that intersect the SourceRange.
void TextDiagnosticPrinter::HighlightRange(const SourceRange &R,
- const SourceManager& SourceMgr,
- unsigned LineNo, unsigned FileID,
+ const SourceManager &SourceMgr,
+ unsigned LineNo, FileID FID,
std::string &CaretLine,
const std::string &SourceLine) {
assert(CaretLine.size() == SourceLine.size() &&
@@ -47,12 +47,14 @@ void TextDiagnosticPrinter::HighlightRange(const SourceRange &R,
SourceLocation InstantiationStart =
SourceMgr.getInstantiationLoc(R.getBegin());
unsigned StartLineNo = SourceMgr.getLineNumber(InstantiationStart);
- if (StartLineNo > LineNo || InstantiationStart.getFileID() != FileID)
+ if (StartLineNo > LineNo ||
+ SourceMgr.getCanonicalFileID(InstantiationStart) != FID)
return; // No intersection.
SourceLocation InstantiationEnd = SourceMgr.getInstantiationLoc(R.getEnd());
unsigned EndLineNo = SourceMgr.getLineNumber(InstantiationEnd);
- if (EndLineNo < LineNo || InstantiationEnd.getFileID() != FileID)
+ if (EndLineNo < LineNo ||
+ SourceMgr.getCanonicalFileID(InstantiationEnd) != FID)
return; // No intersection.
// Compute the column number of the start.
@@ -98,14 +100,14 @@ void TextDiagnosticPrinter::HighlightRange(const SourceRange &R,
void TextDiagnosticPrinter::HandleDiagnostic(Diagnostic::Level Level,
const DiagnosticInfo &Info) {
unsigned LineNo = 0, ColNo = 0;
- unsigned FileID = 0;
+ FileID FID;
const char *LineStart = 0, *LineEnd = 0;
const FullSourceLoc &Pos = Info.getLocation();
if (Pos.isValid()) {
FullSourceLoc LPos = Pos.getInstantiationLoc();
+ FID = LPos.getFileID();
LineNo = LPos.getLineNumber();
- FileID = LPos.getFileID();
// First, if this diagnostic is not in the main file, print out the
// "included from" lines.
@@ -161,7 +163,7 @@ void TextDiagnosticPrinter::HandleDiagnostic(Diagnostic::Level Level,
// Highlight all of the characters covered by Ranges with ~ characters.
for (unsigned i = 0; i != Info.getNumRanges(); ++i)
- HighlightRange(Info.getRange(i), Pos.getManager(), LineNo, FileID,
+ HighlightRange(Info.getRange(i), Pos.getManager(), LineNo, FID,
CaretLine, SourceLine);
// Next, insert the caret itself.
OpenPOWER on IntegriCloud