summaryrefslogtreecommitdiffstats
path: root/clang/tools
diff options
context:
space:
mode:
authorRui Ueyama <ruiu@google.com>2019-08-02 07:22:34 +0000
committerRui Ueyama <ruiu@google.com>2019-08-02 07:22:34 +0000
commit4d41c332ef57281973e5e73295a56132ae12df77 (patch)
tree2fd94fb54c00a1233ce74978d3148d250bca01cd /clang/tools
parent206fe82be410ff8cc7619c89afdff6561275a015 (diff)
downloadbcm5719-llvm-4d41c332ef57281973e5e73295a56132ae12df77.tar.gz
bcm5719-llvm-4d41c332ef57281973e5e73295a56132ae12df77.zip
Revert r367649: Improve raw_ostream so that you can "write" colors using operator<<
This reverts commit r367649 in an attempt to unbreak Windows bots. llvm-svn: 367658
Diffstat (limited to 'clang/tools')
-rw-r--r--clang/tools/diagtool/TreeView.cpp48
1 files changed, 34 insertions, 14 deletions
diff --git a/clang/tools/diagtool/TreeView.cpp b/clang/tools/diagtool/TreeView.cpp
index 9bb710775d0..154c52a485a 100644
--- a/clang/tools/diagtool/TreeView.cpp
+++ b/clang/tools/diagtool/TreeView.cpp
@@ -20,16 +20,29 @@ DEF_DIAGTOOL("tree", "Show warning flags in a tree view", TreeView)
using namespace clang;
using namespace diagtool;
-class TreePrinter {
- using Color = llvm::raw_ostream::Color;
+static bool hasColors(const llvm::raw_ostream &out) {
+ if (&out != &llvm::errs() && &out != &llvm::outs())
+ return false;
+ return llvm::errs().is_displayed() && llvm::outs().is_displayed();
+}
+class TreePrinter {
public:
llvm::raw_ostream &out;
+ const bool ShowColors;
bool Internal;
- TreePrinter(llvm::raw_ostream &out) : out(out), Internal(false) {
- if (&out != &llvm::errs() && &out != &llvm::outs())
- out.disable_colors();
+ TreePrinter(llvm::raw_ostream &out)
+ : out(out), ShowColors(hasColors(out)), Internal(false) {}
+
+ void setColor(llvm::raw_ostream::Colors Color) {
+ if (ShowColors)
+ out << llvm::sys::Process::OutputColor(Color, false, false);
+ }
+
+ void resetColor() {
+ if (ShowColors)
+ out << llvm::sys::Process::ResetColor();
}
static bool isIgnored(unsigned DiagID) {
@@ -57,11 +70,12 @@ public:
out.indent(Indent * 2);
if (enabledByDefault(Group))
- out << Color::GREEN;
+ setColor(llvm::raw_ostream::GREEN);
else
- out << Color::YELLOW;
+ setColor(llvm::raw_ostream::YELLOW);
- out << "-W" << Group.getName() << "\n" << Color::RESET;
+ out << "-W" << Group.getName() << "\n";
+ resetColor();
++Indent;
for (const GroupRecord &GR : Group.subgroups()) {
@@ -70,10 +84,12 @@ public:
if (Internal) {
for (const DiagnosticRecord &DR : Group.diagnostics()) {
- if (!isIgnored(DR.DiagID))
- out << Color::GREEN;
+ if (ShowColors && !isIgnored(DR.DiagID))
+ setColor(llvm::raw_ostream::GREEN);
out.indent(Indent * 2);
- out << DR.getName() << Color::RESET << "\n";
+ out << DR.getName();
+ resetColor();
+ out << "\n";
}
}
}
@@ -119,9 +135,13 @@ public:
}
void showKey() {
- out << '\n'
- << Color::GREEN << "GREEN" << Color::RESET
- << " = enabled by default\n\n";
+ if (ShowColors) {
+ out << '\n';
+ setColor(llvm::raw_ostream::GREEN);
+ out << "GREEN";
+ resetColor();
+ out << " = enabled by default\n\n";
+ }
}
};
OpenPOWER on IntegriCloud