r367658 - Revert r367649: Improve raw_ostream so that you can "write" colors using operator<<

Rui Ueyama via cfe-commits cfe-commits at lists.llvm.org
Fri Aug 2 00:22:35 PDT 2019


Author: ruiu
Date: Fri Aug  2 00:22:34 2019
New Revision: 367658

URL: http://llvm.org/viewvc/llvm-project?rev=367658&view=rev
Log:
Revert r367649: Improve raw_ostream so that you can "write" colors using operator<<

This reverts commit r367649 in an attempt to unbreak Windows bots.

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

Modified: cfe/trunk/include/clang/AST/ASTDumperUtils.h
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/AST/ASTDumperUtils.h?rev=367658&r1=367657&r2=367658&view=diff
==============================================================================
--- cfe/trunk/include/clang/AST/ASTDumperUtils.h (original)
+++ cfe/trunk/include/clang/AST/ASTDumperUtils.h Fri Aug  2 00:22:34 2019
@@ -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;
 };
 

Modified: cfe/trunk/lib/Analysis/CFG.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Analysis/CFG.cpp?rev=367658&r1=367657&r2=367658&view=diff
==============================================================================
--- cfe/trunk/lib/Analysis/CFG.cpp (original)
+++ cfe/trunk/lib/Analysis/CFG.cpp Fri Aug  2 00:22:34 2019
@@ -5509,7 +5509,7 @@ static void print_block(raw_ostream &OS,
   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,
 
     // 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 ";

Modified: cfe/trunk/lib/Frontend/CompilerInvocation.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Frontend/CompilerInvocation.cpp?rev=367658&r1=367657&r2=367658&view=diff
==============================================================================
--- cfe/trunk/lib/Frontend/CompilerInvocation.cpp (original)
+++ cfe/trunk/lib/Frontend/CompilerInvocation.cpp Fri Aug  2 00:22:34 2019
@@ -1491,10 +1491,6 @@ bool clang::ParseDiagnosticArgs(Diagnost
                    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;

Modified: cfe/trunk/lib/Frontend/TextDiagnostic.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Frontend/TextDiagnostic.cpp?rev=367658&r1=367657&r2=367658&view=diff
==============================================================================
--- cfe/trunk/lib/Frontend/TextDiagnostic.cpp (original)
+++ cfe/trunk/lib/Frontend/TextDiagnostic.cpp Fri Aug  2 00:22:34 2019
@@ -23,16 +23,23 @@
 
 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,

Modified: cfe/trunk/tools/diagtool/TreeView.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/tools/diagtool/TreeView.cpp?rev=367658&r1=367657&r2=367658&view=diff
==============================================================================
--- cfe/trunk/tools/diagtool/TreeView.cpp (original)
+++ cfe/trunk/tools/diagtool/TreeView.cpp Fri Aug  2 00:22:34 2019
@@ -20,16 +20,29 @@ DEF_DIAGTOOL("tree", "Show warning flags
 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";
+    }
   }
 };
 




More information about the cfe-commits mailing list