]> granicus.if.org Git - clang/commitdiff
Revert r367649: Improve raw_ostream so that you can "write" colors using operator<<
authorRui Ueyama <ruiu@google.com>
Fri, 2 Aug 2019 07:22:34 +0000 (07:22 +0000)
committerRui Ueyama <ruiu@google.com>
Fri, 2 Aug 2019 07:22:34 +0000 (07:22 +0000)
This reverts commit r367649 in an attempt to unbreak Windows bots.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@367658 91177308-0d34-0410-b5e6-96231b3b80d8

include/clang/AST/ASTDumperUtils.h
lib/Analysis/CFG.cpp
lib/Frontend/CompilerInvocation.cpp
lib/Frontend/TextDiagnostic.cpp
tools/diagtool/TreeView.cpp

index 3dd4f9c081431ae4ebe8cf8bcec2ee80e8e7c651..55a085449a9b2e266f7da4ee8c4643fc0225da61 100644 (file)
@@ -27,7 +27,7 @@ enum ASTDumpOutputFormat {
 // Do not use bold yellow for any text.  It is hard to read on white screens.
 
 struct TerminalColor {
-  llvm::raw_ostream::Color Color;
+  llvm::raw_ostream::Colors Color;
   bool Bold;
 };
 
index 5db15077ce3f8817ac3d23a12407f82c94927bad..0ed1e988a196ae7793a333b8ce80aab579890349 100644 (file)
@@ -5509,7 +5509,7 @@ static void print_block(raw_ostream &OS, const CFG* cfg,
   if (print_edges) {
     // Print the predecessors of this block.
     if (!B.pred_empty()) {
-      const raw_ostream::Color Color = raw_ostream::BLUE;
+      const raw_ostream::Colors Color = raw_ostream::BLUE;
       if (ShowColors)
         OS.changeColor(Color);
       OS << "   Preds " ;
@@ -5546,7 +5546,7 @@ static void print_block(raw_ostream &OS, const CFG* cfg,
 
     // Print the successors of this block.
     if (!B.succ_empty()) {
-      const raw_ostream::Color Color = raw_ostream::MAGENTA;
+      const raw_ostream::Colors Color = raw_ostream::MAGENTA;
       if (ShowColors)
         OS.changeColor(Color);
       OS << "   Succs ";
index d9bbe2538105847bc3a34a7d3c62a7f16855b039..6bf4fbcbb21ba806979be2c2a4124a954ac5f467 100644 (file)
@@ -1491,10 +1491,6 @@ bool clang::ParseDiagnosticArgs(DiagnosticOptions &Opts, ArgList &Args,
                    OPT_fno_diagnostics_show_option, DefaultShowOpt);
 
   llvm::sys::Process::UseANSIEscapeCodes(Args.hasArg(OPT_fansi_escape_codes));
-  if (Opts.ShowColors) {
-    llvm::outs().enable_colors();
-    llvm::errs().enable_colors();
-  }
 
   // Default behavior is to not to show note include stacks.
   Opts.ShowNoteIncludeStack = false;
index d066ce06715517fb234ddf92d198a1d591c8f098..d6e75a9180cf54d2ee0e6ae938a3f972a45b8f30 100644 (file)
 
 using namespace clang;
 
-static const raw_ostream::Color noteColor = raw_ostream::BLACK;
-static const raw_ostream::Color remarkColor = raw_ostream::BLUE;
-static const raw_ostream::Color fixitColor = raw_ostream::GREEN;
-static const raw_ostream::Color caretColor = raw_ostream::GREEN;
-static const raw_ostream::Color warningColor = raw_ostream::MAGENTA;
-static const raw_ostream::Color templateColor = raw_ostream::CYAN;
-static const raw_ostream::Color errorColor = raw_ostream::RED;
-static const raw_ostream::Color fatalColor = raw_ostream::RED;
+static const enum raw_ostream::Colors noteColor =
+  raw_ostream::BLACK;
+static const enum raw_ostream::Colors remarkColor =
+  raw_ostream::BLUE;
+static const enum raw_ostream::Colors fixitColor =
+  raw_ostream::GREEN;
+static const enum raw_ostream::Colors caretColor =
+  raw_ostream::GREEN;
+static const enum raw_ostream::Colors warningColor =
+  raw_ostream::MAGENTA;
+static const enum raw_ostream::Colors templateColor =
+  raw_ostream::CYAN;
+static const enum raw_ostream::Colors errorColor = raw_ostream::RED;
+static const enum raw_ostream::Colors fatalColor = raw_ostream::RED;
 // Used for changing only the bold attribute.
-static const raw_ostream::Color savedColor = raw_ostream::SAVEDCOLOR;
+static const enum raw_ostream::Colors savedColor =
+  raw_ostream::SAVEDCOLOR;
 
 /// Add highlights to differences in template strings.
 static void applyTemplateHighlighting(raw_ostream &OS, StringRef Str,
index 9bb710775d00252f57da60168b8f63f8e6065ad6..154c52a485afb8b4350a390bbe36ec9d76a4bace 100644 (file)
@@ -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";
+    }
   }
 };