Author: jdevlieghere Date: Tue Sep 5 11:04:40 2017 New Revision: 312546 URL: http://llvm.org/viewvc/llvm-project?rev=312546&view=rev Log: [diagtool] Change default tree behavior to print only flags
This patch changes the default behavior of `diagtool tree` to only display warning flags and not the internal warnings flags. The latter is an implementation detail of the compiler and usually not what the users wants. Furthermore, flags that are enabled by default are now also printed in green. Originally, this was only the case for the diagnostic names. Differential revision: https://reviews.llvm.org/D37390 Modified: cfe/trunk/test/Misc/warning-flags-tree.c cfe/trunk/tools/diagtool/TreeView.cpp Modified: cfe/trunk/test/Misc/warning-flags-tree.c URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Misc/warning-flags-tree.c?rev=312546&r1=312545&r2=312546&view=diff ============================================================================== --- cfe/trunk/test/Misc/warning-flags-tree.c (original) +++ cfe/trunk/test/Misc/warning-flags-tree.c Tue Sep 5 11:04:40 2017 @@ -1,6 +1,6 @@ -// RUN: diagtool tree | FileCheck -strict-whitespace %s -// RUN: diagtool tree -Weverything | FileCheck -strict-whitespace %s -// RUN: diagtool tree everything | FileCheck -strict-whitespace %s +// RUN: diagtool tree --internal | FileCheck -strict-whitespace %s +// RUN: diagtool tree --internal -Weverything | FileCheck -strict-whitespace %s +// RUN: diagtool tree --internal everything | FileCheck -strict-whitespace %s // // These three ways of running diagtool tree are the same: // they produce a tree for every top-level diagnostic flag. @@ -29,8 +29,7 @@ // RUN: not diagtool tree -Wthis-is-not-a-valid-flag - -// RUN: diagtool tree -Wgnu | FileCheck -strict-whitespace -check-prefix CHECK-GNU %s +// RUN: diagtool tree --internal -Wgnu | FileCheck -strict-whitespace -check-prefix CHECK-GNU %s // CHECK-GNU: -Wgnu // CHECK-GNU: -Wgnu-designator // CHECK-GNU: ext_gnu_array_range @@ -40,7 +39,7 @@ // CHECK-GNU: ext_vla // There are more GNU extensions but we don't need to check them all. -// RUN: diagtool tree --flags-only -Wgnu | FileCheck -check-prefix CHECK-FLAGS-ONLY %s +// RUN: diagtool tree -Wgnu | FileCheck -check-prefix CHECK-FLAGS-ONLY %s // CHECK-FLAGS-ONLY: -Wgnu // CHECK-FLAGS-ONLY: -Wgnu-designator // CHECK-FLAGS-ONLY-NOT: ext_gnu_array_range Modified: cfe/trunk/tools/diagtool/TreeView.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/tools/diagtool/TreeView.cpp?rev=312546&r1=312545&r2=312546&view=diff ============================================================================== --- cfe/trunk/tools/diagtool/TreeView.cpp (original) +++ cfe/trunk/tools/diagtool/TreeView.cpp Tue Sep 5 11:04:40 2017 @@ -32,10 +32,10 @@ class TreePrinter { public: llvm::raw_ostream &out; const bool ShowColors; - bool FlagsOnly; + bool Internal; TreePrinter(llvm::raw_ostream &out) - : out(out), ShowColors(hasColors(out)), FlagsOnly(false) {} + : out(out), ShowColors(hasColors(out)), Internal(false) {} void setColor(llvm::raw_ostream::Colors Color) { if (ShowColors) @@ -54,10 +54,28 @@ public: return Diags.isIgnored(DiagID, SourceLocation()); } + static bool enabledByDefault(const GroupRecord &Group) { + for (const DiagnosticRecord &DR : Group.diagnostics()) { + if (isIgnored(DR.DiagID)) + return false; + } + + for (const GroupRecord &GR : Group.subgroups()) { + if (!enabledByDefault(GR)) + return false; + } + + return true; + } + void printGroup(const GroupRecord &Group, unsigned Indent = 0) { out.indent(Indent * 2); - setColor(llvm::raw_ostream::YELLOW); + if (enabledByDefault(Group)) + setColor(llvm::raw_ostream::GREEN); + else + setColor(llvm::raw_ostream::YELLOW); + out << "-W" << Group.getName() << "\n"; resetColor(); @@ -66,7 +84,7 @@ public: printGroup(GR, Indent); } - if (!FlagsOnly) { + if (Internal) { for (const DiagnosticRecord &DR : Group.diagnostics()) { if (ShowColors && !isIgnored(DR.DiagID)) setColor(llvm::raw_ostream::GREEN); @@ -132,16 +150,16 @@ public: }; static void printUsage() { - llvm::errs() << "Usage: diagtool tree [--flags-only] [<diagnostic-group>]\n"; + llvm::errs() << "Usage: diagtool tree [--internal] [<diagnostic-group>]\n"; } int TreeView::run(unsigned int argc, char **argv, llvm::raw_ostream &out) { // First check our one flag (--flags-only). - bool FlagsOnly = false; + bool Internal = false; if (argc > 0) { StringRef FirstArg(*argv); - if (FirstArg.equals("--flags-only")) { - FlagsOnly = true; + if (FirstArg.equals("--internal")) { + Internal = true; --argc; ++argv; } @@ -168,7 +186,7 @@ int TreeView::run(unsigned int argc, cha } TreePrinter TP(out); - TP.FlagsOnly = FlagsOnly; + TP.Internal = Internal; TP.showKey(); return ShowAll ? TP.showAll() : TP.showGroup(RootGroup); } _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits