[cfe-commits] r140476 - /cfe/trunk/lib/Frontend/TextDiagnosticPrinter.cpp
Chandler Carruth
chandlerc at gmail.com
Sun Sep 25 15:54:56 PDT 2011
Author: chandlerc
Date: Sun Sep 25 17:54:56 2011
New Revision: 140476
URL: http://llvm.org/viewvc/llvm-project?rev=140476&view=rev
Log:
Shuffle some names around. 'CaretDiagnostic' is inaccurate as this needs
to handle non-caret diagnostics as well in order to be fully useful in
libclang etc. Also sketch out some more of my plans on this refactoring.
Modified:
cfe/trunk/lib/Frontend/TextDiagnosticPrinter.cpp
Modified: cfe/trunk/lib/Frontend/TextDiagnosticPrinter.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Frontend/TextDiagnosticPrinter.cpp?rev=140476&r1=140475&r2=140476&view=diff
==============================================================================
--- cfe/trunk/lib/Frontend/TextDiagnosticPrinter.cpp (original)
+++ cfe/trunk/lib/Frontend/TextDiagnosticPrinter.cpp Sun Sep 25 17:54:56 2011
@@ -292,23 +292,26 @@
namespace {
-/// \brief Class to encapsulate the logic for printing a caret diagnostic
-/// message.
+/// \brief Class to encapsulate the logic for formatting and printing a textual
+/// diagnostic message.
///
-/// This class provides an interface for building and emitting a caret
-/// diagnostic, including all of the macro backtrace caret diagnostics, FixIt
-/// Hints, and code snippets. In the presence of macros this turns into
-/// a recursive process and so the class provides common state across the
-/// emission of a particular diagnostic, while each invocation of \see Emit()
-/// walks down the macro stack.
-///
-/// This logic assumes that the core diagnostic location and text has already
-/// been emitted and focuses on emitting the pretty caret display and macro
-/// backtrace following that.
-///
-/// FIXME: Hoist helper routines specific to caret diagnostics into class
-/// methods to reduce paramater passing churn.
-class CaretDiagnostic {
+/// This class provides an interface for building and emitting a textual
+/// diagnostic, including all of the macro backtraces, caret diagnostics, FixIt
+/// Hints, and code snippets. In the presence of macros this involves
+/// a recursive process, synthesizing notes for each macro expansion.
+///
+/// The purpose of this class is to isolate the implementation of printing
+/// beautiful text diagnostics from any particular interfaces. The Clang
+/// DiagnosticClient is implemented through this class as is diagnostic
+/// printing coming out of libclang.
+///
+/// A brief worklist:
+/// FIXME: Sink the printing of the diagnostic message itself into this class.
+/// FIXME: Sink the printing of the include stack into this class.
+/// FIXME: Remove the TextDiagnosticPrinter as an input.
+/// FIXME: Sink the recursive printing of template instantiations into this
+/// class.
+class TextDiagnostic {
TextDiagnosticPrinter &Printer;
raw_ostream &OS;
const SourceManager &SM;
@@ -316,7 +319,7 @@
const DiagnosticOptions &DiagOpts;
public:
- CaretDiagnostic(TextDiagnosticPrinter &Printer,
+ TextDiagnostic(TextDiagnosticPrinter &Printer,
raw_ostream &OS,
const SourceManager &SM,
const LangOptions &LangOpts,
@@ -769,10 +772,10 @@
assert(DiagOpts && "Unexpected diagnostic without options set");
// FIXME: Remove this method and have clients directly build and call Emit on
- // the CaretDiagnostic object.
- CaretDiagnostic CaretDiag(*this, OS, SM, *LangOpts, *DiagOpts);
+ // the TextDiagnostic object.
+ TextDiagnostic TextDiag(*this, OS, SM, *LangOpts, *DiagOpts);
unsigned MacroDepth = 0;
- CaretDiag.Emit(Loc, Ranges, Hints, MacroDepth);
+ TextDiag.Emit(Loc, Ranges, Hints, MacroDepth);
}
/// \brief Skip over whitespace in the string, starting at the given
More information about the cfe-commits
mailing list