summaryrefslogtreecommitdiffstats
path: root/Source
diff options
context:
space:
mode:
authorStephen Kelly <steveire@gmail.com>2016-06-09 07:57:47 (GMT)
committerStephen Kelly <steveire@gmail.com>2016-06-12 20:09:27 (GMT)
commit23f87e8157770c56d3aa568f3d1318f9b9070364 (patch)
tree89f980aa45d40f513a42d5cc0e39b48ede696f07 /Source
parent54c65d5fb22c3cc53ecd707687c2f25b1643726b (diff)
downloadCMake-23f87e8157770c56d3aa568f3d1318f9b9070364.zip
CMake-23f87e8157770c56d3aa568f3d1318f9b9070364.tar.gz
CMake-23f87e8157770c56d3aa568f3d1318f9b9070364.tar.bz2
cmake: Remove force from IssueMessage API
The force parameter is ugly and makes the method harder to reason about (issues the message ... but maybe it doesn't ... but then again you can force it). It is a violation of https://en.wikipedia.org/wiki/Interface_segregation_principle and is the kind of thing described in a recent blog here: http://code.joejag.com/2016/anti-if-the-missing-patterns.html "Any time you see this you actually have two methods bundled into one. That boolean represents an opportunity to name a concept in your code."
Diffstat (limited to 'Source')
-rw-r--r--Source/cmMakefile.cxx6
-rw-r--r--Source/cmMakefile.h3
-rw-r--r--Source/cmMessageCommand.cxx5
-rw-r--r--Source/cmake.cxx18
-rw-r--r--Source/cmake.h3
5 files changed, 16 insertions, 19 deletions
diff --git a/Source/cmMakefile.cxx b/Source/cmMakefile.cxx
index ca30b3d..00ff5ac 100644
--- a/Source/cmMakefile.cxx
+++ b/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
diff --git a/Source/cmMakefile.h b/Source/cmMakefile.h
index c665b1f..719c764 100644
--- a/Source/cmMakefile.h
+++ b/Source/cmMakefile.h
@@ -715,8 +715,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; }
diff --git a/Source/cmMessageCommand.cxx b/Source/cmMessageCommand.cxx
index f4458a7..689e3fa 100644
--- a/Source/cmMessageCommand.cxx
+++ b/Source/cmMessageCommand.cxx
@@ -63,8 +63,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);
diff --git a/Source/cmake.cxx b/Source/cmake.cxx
index 657091b..594eebf 100644
--- a/Source/cmake.cxx
+++ b/Source/cmake.cxx
@@ -2294,16 +2294,14 @@ void displayMessage(cmake::MessageType t, std::ostringstream& msg)
}
void cmake::IssueMessage(cmake::MessageType t, std::string const& text,
- cmListFileBacktrace const& backtrace,
- bool force) 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;
- }
+ cmListFileBacktrace const& backtrace) const
+{
+ 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)) {
diff --git a/Source/cmake.h b/Source/cmake.h
index 1d63ede..523c576 100644
--- a/Source/cmake.h
+++ b/Source/cmake.h
@@ -381,8 +381,7 @@ 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;