diff options
Diffstat (limited to 'lib/Support/SourceMgr.cpp')
| -rw-r--r-- | lib/Support/SourceMgr.cpp | 10 | 
1 files changed, 9 insertions, 1 deletions
diff --git a/lib/Support/SourceMgr.cpp b/lib/Support/SourceMgr.cpp index 83c7964ca00c1..4e7520c9d3397 100644 --- a/lib/Support/SourceMgr.cpp +++ b/lib/Support/SourceMgr.cpp @@ -168,13 +168,21 @@ SMDiagnostic SourceMgr::GetMessage(SMLoc Loc, const std::string &Msg,    }    PrintedMsg += Msg; -  return SMDiagnostic(CurMB->getBufferIdentifier(), FindLineNumber(Loc, CurBuf), +  return SMDiagnostic(Loc, +                      CurMB->getBufferIdentifier(), FindLineNumber(Loc, CurBuf),                        Loc.getPointer()-LineStart, PrintedMsg,                        LineStr, ShowLine);  }  void SourceMgr::PrintMessage(SMLoc Loc, const std::string &Msg,                               const char *Type, bool ShowLine) const { +  // Report the message with the diagnostic handler if present. +  if (DiagHandler) { +    DiagHandler(GetMessage(Loc, Msg, Type, ShowLine), +                DiagContext, DiagLocCookie); +    return; +  } +      raw_ostream &OS = errs();    int CurBuf = FindBufferContainingLoc(Loc);  | 
