Jelajahi Sumber

Merge topic 'fix-cmake-ISP-violation'

23f87e81 cmake: Remove force from IssueMessage API
54c65d5f cmake: Extract DisplayMessage API.
Brad King 9 tahun lalu
induk
melakukan
4e66ca1952
5 mengubah file dengan 24 tambahan dan 18 penghapusan
  1. 3 3
      Source/cmMakefile.cxx
  2. 1 2
      Source/cmMakefile.h
  3. 3 2
      Source/cmMessageCommand.cxx
  4. 13 9
      Source/cmake.cxx
  5. 4 2
      Source/cmake.h

+ 3 - 3
Source/cmMakefile.cxx

@@ -105,8 +105,8 @@ cmMakefile::~cmMakefile()
   cmDeleteAll(this->EvaluationFiles);
 }
 
-void cmMakefile::IssueMessage(cmake::MessageType t, std::string const& text,
-                              bool force) const
+void cmMakefile::IssueMessage(cmake::MessageType t,
+                              std::string const& text) const
 {
   // Collect context information.
   if (!this->ExecutionStatusStack.empty()) {
@@ -114,7 +114,7 @@ void cmMakefile::IssueMessage(cmake::MessageType t, std::string const& text,
       this->ExecutionStatusStack.back()->SetNestedError(true);
     }
   }
-  this->GetCMakeInstance()->IssueMessage(t, text, this->GetBacktrace(), force);
+  this->GetCMakeInstance()->IssueMessage(t, text, this->GetBacktrace());
 }
 
 cmStringRange cmMakefile::GetIncludeDirectoriesEntries() const

+ 1 - 2
Source/cmMakefile.h

@@ -720,8 +720,7 @@ public:
     cmMakefile* Makefile;
   };
 
-  void IssueMessage(cmake::MessageType t, std::string const& text,
-                    bool force = false) const;
+  void IssueMessage(cmake::MessageType t, std::string const& text) const;
 
   /** Set whether or not to report a CMP0000 violation.  */
   void SetCheckCMP0000(bool b) { this->CheckCMP0000 = b; }

+ 3 - 2
Source/cmMessageCommand.cxx

@@ -64,8 +64,9 @@ bool cmMessageCommand::InitialPass(std::vector<std::string> const& args,
   std::string message = cmJoin(cmMakeRange(i, args.end()), std::string());
 
   if (type != cmake::MESSAGE) {
-    // we've overriden the message type, above, so force IssueMessage to use it
-    this->Makefile->IssueMessage(type, message, true);
+    // we've overriden the message type, above, so display it directly
+    cmake* cm = this->Makefile->GetCMakeInstance();
+    cm->DisplayMessage(type, message, this->Makefile->GetBacktrace());
   } else {
     if (status) {
       this->Makefile->DisplayStatus(message.c_str(), -1);

+ 13 - 9
Source/cmake.cxx

@@ -2294,22 +2294,26 @@ void displayMessage(cmake::MessageType t, std::ostringstream& msg)
 }
 
 void cmake::IssueMessage(cmake::MessageType t, std::string const& text,
-                         cmListFileBacktrace const& backtrace,
-                         bool force) const
+                         cmListFileBacktrace const& backtrace) const
 {
-  if (!force) {
-    // override the message type, if needed, for warnings and errors
-    cmake::MessageType override = this->ConvertMessageType(t);
-    if (override != t) {
-      t = override;
-      force = true;
-    }
+  bool force = false;
+  // override the message type, if needed, for warnings and errors
+  cmake::MessageType override = this->ConvertMessageType(t);
+  if (override != t) {
+    t = override;
+    force = true;
   }
 
   if (!force && !this->IsMessageTypeVisible(t)) {
     return;
   }
 
+  this->DisplayMessage(t, text, backtrace);
+}
+
+void cmake::DisplayMessage(cmake::MessageType t, std::string const& text,
+                           cmListFileBacktrace const& backtrace) const
+{
   std::ostringstream msg;
   if (!printMessagePreamble(t, msg)) {
     return;

+ 4 - 2
Source/cmake.h

@@ -381,8 +381,10 @@ public:
   /** Display a message to the user.  */
   void IssueMessage(
     cmake::MessageType t, std::string const& text,
-    cmListFileBacktrace const& backtrace = cmListFileBacktrace(),
-    bool force = false) const;
+    cmListFileBacktrace const& backtrace = cmListFileBacktrace()) const;
+
+  void DisplayMessage(cmake::MessageType t, std::string const& text,
+                      cmListFileBacktrace const& backtrace) const;
 
   ///! run the --build option
   int Build(const std::string& dir, const std::string& target,