Ping. Is there anyone concerned about this change? > On Oct 15, 2014, at 6:08 PM, Steven Wu <[email protected]> wrote: > > Hi > > This patch adds two more fields to diagnostic log (not serialize-diagnostic). > The two new fields are DiagnosticID and Warning Option. I find them very > handy in detecting and categorizing diagnostics. > The added fields are in a dict type in a plist so it is unlikely to break any > existing tools that read diagnostic logs. > > Steven > > -- > include/clang/Frontend/LogDiagnosticPrinter.h | 3 +++ > lib/Frontend/LogDiagnosticPrinter.cpp | 14 ++++++++++++++ > 2 files changed, 17 insertions(+) > > diff --git a/include/clang/Frontend/LogDiagnosticPrinter.h > b/include/clang/Frontend/LogDiagnosticPrinter.h > index 8d60e9b..98adf65 100644 > --- a/include/clang/Frontend/LogDiagnosticPrinter.h > +++ b/include/clang/Frontend/LogDiagnosticPrinter.h > @@ -35,6 +35,9 @@ class LogDiagnosticPrinter : public DiagnosticConsumer { > > /// The ID of the diagnostic. > unsigned DiagnosticID; > + > + /// The Option Flag for the diagnostic > + std::string WarningOption; > > /// The level of the diagnostic. > DiagnosticsEngine::Level DiagnosticLevel; > diff --git a/lib/Frontend/LogDiagnosticPrinter.cpp > b/lib/Frontend/LogDiagnosticPrinter.cpp > index c2dcd1b..19a4660 100644 > --- a/lib/Frontend/LogDiagnosticPrinter.cpp > +++ b/lib/Frontend/LogDiagnosticPrinter.cpp > @@ -63,6 +63,14 @@ LogDiagnosticPrinter::EmitDiagEntry(llvm::raw_ostream &OS, > << " "; > EmitString(OS, DE.Message) << '\n'; > } > + OS << " <key>ID</key>\n" > + << " "; > + EmitInteger(OS, DE.DiagnosticID) << '\n'; > + if (!DE.WarningOption.empty()) { > + OS << " <key>WarningOption</key>\n" > + << " "; > + EmitString(OS, DE.WarningOption) << '\n'; > + } > OS << " </dict>\n"; > } > > @@ -122,6 +130,12 @@ void > LogDiagnosticPrinter::HandleDiagnostic(DiagnosticsEngine::Level Level, > DE.DiagnosticID = Info.getID(); > DE.DiagnosticLevel = Level; > > + DE.WarningOption = ""; > + StringRef WarningOption = > DiagnosticIDs::getWarningOptionForDiag(DE.DiagnosticID); > + if (!WarningOption.empty()) { > + DE.WarningOption = WarningOption.str(); > + } > + > // Format the message. > SmallString<100> MessageStr; > Info.FormatDiagnostic(MessageStr); > > <Diaglog.patch>
_______________________________________________ cfe-commits mailing list [email protected] http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
