+ DE.WarningOption = "";
+ StringRef WarningOption =
DiagnosticIDs::getWarningOptionForDiag(DE.DiagnosticID);
+ if (!WarningOption.empty()) {
+ DE.WarningOption = WarningOption.str();
+ }
+
Is there a reason this can’t be simplified to
DE.WarningOption = DiagnosticIDs::getWarningOptionForDiag(DE.DiagnosticID);
?
Otherwise LGTM.
> On Nov 5, 2014, at 1:31 PM, Steven Wu <[email protected]> wrote:
>
> Ping. Is there anyone concerned about this change?
>
>> On Oct 15, 2014, at 6:08 PM, Steven Wu <[email protected]
>> <mailto:[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] <mailto:[email protected]>
> http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
> <http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits>
_______________________________________________
cfe-commits mailing list
[email protected]
http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits