Fix: while() reports an error the same way as if()

With arguments list expanded.
This commit is contained in:
Alex Turbov
2021-08-09 21:48:24 +03:00
parent 880ca66b51
commit e97e714f0d
2 changed files with 10 additions and 9 deletions

View File

@@ -16,6 +16,7 @@
#include "cmListFileCache.h"
#include "cmMakefile.h"
#include "cmMessageType.h"
#include "cmOutputConverter.h"
#include "cmSystemTools.h"
#include "cmake.h"
@@ -100,16 +101,13 @@ bool cmWhileFunctionBlocker::Replay(std::vector<cmListFileFunction> functions,
}
if (!isTrue && !errorString.empty()) {
std::string err = "had incorrect arguments: ";
for (cmListFileArgument const& arg : this->Args) {
err += (arg.Delim ? "\"" : "");
err += arg.Value;
err += (arg.Delim ? "\"" : "");
std::string err = "had incorrect arguments:\n ";
for (cmExpandedCommandArgument const& i : expandedArguments) {
err += " ";
err += cmOutputConverter::EscapeForCMake(i.GetValue());
}
err += "(";
err += "\n";
err += errorString;
err += ").";
mf.GetCMakeInstance()->IssueMessage(messageType, err, whileBT);
if (messageType == MessageType::FATAL_ERROR) {
cmSystemTools::SetFatalErrorOccured();

View File

@@ -1,5 +1,8 @@
CMake Error at unbalanced-parenthesis.cmake:[0-9]+ \(while\):
had incorrect arguments: NOT \$\{var_with_paren\} IN_LIST some_list
\(mismatched parenthesis in condition\).
had incorrect arguments:
"NOT" "\(" "IN_LIST" "some_list"
mismatched parenthesis in condition
Call Stack \(most recent call first\):
CMakeLists\.txt:[0-9]+ \(include\)