[lld] r368144 - Simplify error message output. NFC.

Rui Ueyama via llvm-commits llvm-commits at lists.llvm.org
Wed Aug 7 03:11:24 PDT 2019


Author: ruiu
Date: Wed Aug  7 03:11:24 2019
New Revision: 368144

URL: http://llvm.org/viewvc/llvm-project?rev=368144&view=rev
Log:
Simplify error message output. NFC.

Differential Revision: https://reviews.llvm.org/D65855

Modified:
    lld/trunk/Common/ErrorHandler.cpp

Modified: lld/trunk/Common/ErrorHandler.cpp
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/Common/ErrorHandler.cpp?rev=368144&r1=368143&r2=368144&view=diff
==============================================================================
--- lld/trunk/Common/ErrorHandler.cpp (original)
+++ lld/trunk/Common/ErrorHandler.cpp Wed Aug  7 03:11:24 2019
@@ -29,16 +29,14 @@ using namespace lld;
 // but outs() or errs() are not thread-safe. We protect them using a mutex.
 static std::mutex mu;
 
-// Prints "\n" or does nothing, depending on Msg contents of
-// the previous call of this function.
-static void newline(raw_ostream *errorOS, const Twine &msg) {
-  // True if the previous error message contained "\n".
-  // We want to separate multi-line error messages with a newline.
-  static bool flag;
-
-  if (flag)
-    *errorOS << "\n";
-  flag = StringRef(msg.str()).contains('\n');
+// We want to separate multi-line messages with a newline. `sep` is "\n"
+// if the last messages was multi-line. Otherwise "".
+static StringRef sep;
+
+static StringRef getSeparator(const Twine &msg) {
+  if (StringRef(msg.str()).contains('\n'))
+    return "\n";
+  return "";
 }
 
 ErrorHandler &lld::errorHandler() {
@@ -160,9 +158,9 @@ void ErrorHandler::warn(const Twine &msg
   }
 
   std::lock_guard<std::mutex> lock(mu);
-  newline(errorOS, msg);
-  *errorOS << getLocation(msg) << ": " << Colors::MAGENTA
+  *errorOS << sep << getLocation(msg) << ": " << Colors::MAGENTA
            << "warning: " << Colors::RESET << msg << "\n";
+  sep = getSeparator(msg);
 }
 
 void ErrorHandler::error(const Twine &msg) {
@@ -185,17 +183,16 @@ void ErrorHandler::error(const Twine &ms
   std::lock_guard<std::mutex> lock(mu);
 
   if (errorLimit == 0 || errorCount < errorLimit) {
-    newline(errorOS, msg);
-    *errorOS << getLocation(msg) << ": " << Colors::RED
+    *errorOS << sep << getLocation(msg) << ": " << Colors::RED
              << "error: " << Colors::RESET << msg << "\n";
   } else if (errorCount == errorLimit) {
-    newline(errorOS, msg);
-    *errorOS << getLocation(msg) << ": " << Colors::RED
+    *errorOS << sep << getLocation(msg) << ": " << Colors::RED
              << "error: " << Colors::RESET << errorLimitExceededMsg << "\n";
     if (exitEarly)
       exitLld(1);
   }
 
+  sep = getSeparator(msg);
   ++errorCount;
 }
 




More information about the llvm-commits mailing list