sink a call to getInstantiationLoc to eliminate an assertion.

llvm-svn: 64755
This commit is contained in:
Chris Lattner 2009-02-17 07:54:55 +00:00
parent d22603cef0
commit 5abfe97bf1
1 changed files with 5 additions and 4 deletions

View File

@ -104,7 +104,9 @@ void TextDiagnosticPrinter::HighlightRange(const SourceRange &R,
void TextDiagnosticPrinter::EmitCaretDiagnostic(const DiagnosticInfo &Info,
SourceLocation Loc,
SourceManager &SM) {
assert(Loc.isFileID() && "Shouldn't have instantiation locs here");
// We always emit diagnostics about the instantiation points, not the spelling
// points. This more closely correlates to what the user writes.
Loc = SM.getInstantiationLoc(Loc);
// Decompose the location into a FID/Offset pair.
std::pair<FileID, unsigned> LocInfo = SM.getDecomposedLoc(Loc);
@ -228,10 +230,9 @@ void TextDiagnosticPrinter::HandleDiagnostic(Diagnostic::Level Level,
// Cache the LastLoc, it allows us to omit duplicate source/caret spewage.
LastLoc = Info.getLocation();
// Inspect the actual instantiation point of the diagnostic, we don't care
// Inspect the actual source location of the diagnostic, we don't care
// about presumed locations anymore.
FullSourceLoc ILoc = Info.getLocation().getInstantiationLoc();
EmitCaretDiagnostic(Info, ILoc, ILoc.getManager());
EmitCaretDiagnostic(Info, LastLoc, LastLoc.getManager());
}
OS.flush();