mirror of
https://github.com/capstone-engine/llvm-capstone.git
synced 2024-12-14 19:49:36 +00:00
[diagtool] Use operator<<(Colors)
to print out colored output.
r368131 introduced this new API to print out messages in colors. If the colored output is disabled, `operator<<(Colors)` becomes nop. No functionality change intended. Differential Revision: https://reviews.llvm.org/D65854 llvm-svn: 368259
This commit is contained in:
parent
724c6053ac
commit
6fd13f0849
@ -20,31 +20,14 @@ DEF_DIAGTOOL("tree", "Show warning flags in a tree view", TreeView)
|
||||
using namespace clang;
|
||||
using namespace diagtool;
|
||||
|
||||
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 {
|
||||
using Colors = llvm::raw_ostream::Colors;
|
||||
|
||||
public:
|
||||
llvm::raw_ostream &out;
|
||||
const bool ShowColors;
|
||||
bool Internal;
|
||||
|
||||
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(static_cast<char>(Color), false,
|
||||
false);
|
||||
}
|
||||
|
||||
void resetColor() {
|
||||
if (ShowColors)
|
||||
out << llvm::sys::Process::ResetColor();
|
||||
}
|
||||
TreePrinter(llvm::raw_ostream &out) : out(out), Internal(false) {}
|
||||
|
||||
static bool isIgnored(unsigned DiagID) {
|
||||
// FIXME: This feels like a hack.
|
||||
@ -71,12 +54,11 @@ public:
|
||||
out.indent(Indent * 2);
|
||||
|
||||
if (enabledByDefault(Group))
|
||||
setColor(llvm::raw_ostream::GREEN);
|
||||
out << Colors::GREEN;
|
||||
else
|
||||
setColor(llvm::raw_ostream::YELLOW);
|
||||
out << Colors::YELLOW;
|
||||
|
||||
out << "-W" << Group.getName() << "\n";
|
||||
resetColor();
|
||||
out << "-W" << Group.getName() << "\n" << Colors::RESET;
|
||||
|
||||
++Indent;
|
||||
for (const GroupRecord &GR : Group.subgroups()) {
|
||||
@ -85,12 +67,10 @@ public:
|
||||
|
||||
if (Internal) {
|
||||
for (const DiagnosticRecord &DR : Group.diagnostics()) {
|
||||
if (ShowColors && !isIgnored(DR.DiagID))
|
||||
setColor(llvm::raw_ostream::GREEN);
|
||||
if (!isIgnored(DR.DiagID))
|
||||
out << Colors::GREEN;
|
||||
out.indent(Indent * 2);
|
||||
out << DR.getName();
|
||||
resetColor();
|
||||
out << "\n";
|
||||
out << DR.getName() << Colors::RESET << "\n";
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -136,13 +116,8 @@ public:
|
||||
}
|
||||
|
||||
void showKey() {
|
||||
if (ShowColors) {
|
||||
out << '\n';
|
||||
setColor(llvm::raw_ostream::GREEN);
|
||||
out << "GREEN";
|
||||
resetColor();
|
||||
out << " = enabled by default\n\n";
|
||||
}
|
||||
out << '\n' << Colors::GREEN << "GREEN" << Colors::RESET
|
||||
<< " = enabled by default\n\n";
|
||||
}
|
||||
};
|
||||
|
||||
@ -182,6 +157,8 @@ int TreeView::run(unsigned int argc, char **argv, llvm::raw_ostream &out) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
out.enable_colors(out.has_colors());
|
||||
|
||||
TreePrinter TP(out);
|
||||
TP.Internal = Internal;
|
||||
TP.showKey();
|
||||
|
Loading…
Reference in New Issue
Block a user