diff options
author | Ted Kremenek <kremenek@apple.com> | 2012-02-14 02:46:00 +0000 |
---|---|---|
committer | Ted Kremenek <kremenek@apple.com> | 2012-02-14 02:46:00 +0000 |
commit | 8be51eab5ad34515d2a40dcdc8558128ca1800ad (patch) | |
tree | cdd3950decb93678c56ccf8cb492a9e1834b2394 /lib/Frontend/DiagnosticRenderer.cpp | |
parent | 6700d67925abd674ecddfc56948967f49b25bf39 (diff) |
Refactor DiagnosticRenderer and SDiagsRenderer to have some functionality
pulled into DiagnosticNoteRenderer, and common DiagnosticRenderer that
assumes that all custom diagnostic messages are notes. Also extend
DiagnosticRenderer to work with StoredDiagnostics in preparation for
subsequent changes.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@150455 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Frontend/DiagnosticRenderer.cpp')
-rw-r--r-- | lib/Frontend/DiagnosticRenderer.cpp | 31 |
1 files changed, 27 insertions, 4 deletions
diff --git a/lib/Frontend/DiagnosticRenderer.cpp b/lib/Frontend/DiagnosticRenderer.cpp index 548a4a833c..29f9ed5a7d 100644 --- a/lib/Frontend/DiagnosticRenderer.cpp +++ b/lib/Frontend/DiagnosticRenderer.cpp @@ -133,9 +133,9 @@ void DiagnosticRenderer::emitDiagnostic(SourceLocation Loc, StringRef Message, ArrayRef<CharSourceRange> Ranges, ArrayRef<FixItHint> FixItHints, - const Diagnostic *Info) { + DiagOrStoredDiag D) { - beginDiagnostic(Info, Level); + beginDiagnostic(D, Level); PresumedLoc PLoc = getDiagnosticPresumedLoc(SM, Loc); @@ -144,7 +144,7 @@ void DiagnosticRenderer::emitDiagnostic(SourceLocation Loc, emitIncludeStack(PLoc.getIncludeLoc(), Level); // Next, emit the actual diagnostic message. - emitDiagnosticMessage(Loc, PLoc, Level, Message, Ranges, Info); + emitDiagnosticMessage(Loc, PLoc, Level, Message, Ranges, D); // Only recurse if we have a valid location. if (Loc.isValid()) { @@ -166,7 +166,14 @@ void DiagnosticRenderer::emitDiagnostic(SourceLocation Loc, LastLoc = Loc; LastLevel = Level; - endDiagnostic(Info, Level); + endDiagnostic(D, Level); +} + + +void DiagnosticRenderer::emitStoredDiagnostic(StoredDiagnostic &Diag) { + emitDiagnostic(Diag.getLocation(), Diag.getLevel(), Diag.getMessage(), + Diag.getRanges(), Diag.getFixIts(), + &Diag); } /// \brief Prints an include stack when appropriate for a particular @@ -304,3 +311,19 @@ void DiagnosticRenderer::emitMacroExpansionsAndCarets( Ranges, ArrayRef<FixItHint>()); } +DiagnosticNoteRenderer::~DiagnosticNoteRenderer() {} + +void DiagnosticNoteRenderer::emitIncludeLocation(SourceLocation Loc, + PresumedLoc PLoc) { + // Generate a note indicating the include location. + SmallString<200> MessageStorage; + llvm::raw_svector_ostream Message(MessageStorage); + Message << "in file included from " << PLoc.getFilename() << ':' + << PLoc.getLine() << ":"; + emitNote(Loc, Message.str()); +} + +void DiagnosticNoteRenderer::emitBasicNote(StringRef Message) { + emitNote(SourceLocation(), Message); +} + |