diff options
author | Brad King <brad.king@kitware.com> | 2022-03-04 13:53:09 (GMT) |
---|---|---|
committer | Kitware Robot <kwrobot@kitware.com> | 2022-03-04 13:53:17 (GMT) |
commit | bb2477081d8524cf7ada5d09a54ed41273b43419 (patch) | |
tree | c733774db9a8e33f8e21ce7513c462c024218555 | |
parent | 424d04ed51003faea0df1fc3857a81b5a3be71f0 (diff) | |
parent | da2361ffb35799319abca6f7c3138c916685fb2d (diff) | |
download | CMake-bb2477081d8524cf7ada5d09a54ed41273b43419.zip CMake-bb2477081d8524cf7ada5d09a54ed41273b43419.tar.gz CMake-bb2477081d8524cf7ada5d09a54ed41273b43419.tar.bz2 |
Merge topic 'while-bug-compatibility'
da2361ffb3 while: Restore tolerance of condition error
47d197745a Tests: Simplify RunCMake.{if,while} unbalanced parenthesis cases
Acked-by: Kitware Robot <kwrobot@kitware.com>
Acked-by: buildbot <buildbot@kitware.com>
Merge-request: !7041
-rw-r--r-- | Source/cmWhileCommand.cxx | 11 | ||||
-rw-r--r-- | Tests/RunCMake/if/unbalanced-parenthesis-stderr.txt | 2 | ||||
-rw-r--r-- | Tests/RunCMake/if/unbalanced-parenthesis.cmake | 11 | ||||
-rw-r--r-- | Tests/RunCMake/while/unbalanced-parenthesis-result.txt | 1 | ||||
-rw-r--r-- | Tests/RunCMake/while/unbalanced-parenthesis-stderr.txt | 8 | ||||
-rw-r--r-- | Tests/RunCMake/while/unbalanced-parenthesis-stdout.txt | 1 | ||||
-rw-r--r-- | Tests/RunCMake/while/unbalanced-parenthesis.cmake | 13 |
7 files changed, 20 insertions, 27 deletions
diff --git a/Source/cmWhileCommand.cxx b/Source/cmWhileCommand.cxx index b8297ce..a93a81f 100644 --- a/Source/cmWhileCommand.cxx +++ b/Source/cmWhileCommand.cxx @@ -79,12 +79,17 @@ bool cmWhileFunctionBlocker::Replay(std::vector<cmListFileFunction> functions, return out; }; + // FIXME(#23296): For compatibility with older versions of CMake, we + // tolerate condition errors that evaluate to false. We should add + // a policy to enforce such errors. + bool enforceError = true; std::string errorString; MessageType messageType; for (cmConditionEvaluator conditionEvaluator(mf, whileBT); - conditionEvaluator.IsTrue(expandArgs(this->Args, expandedArguments), - errorString, messageType);) { + (enforceError = /* enforce condition errors that evaluate to true */ + conditionEvaluator.IsTrue(expandArgs(this->Args, expandedArguments), + errorString, messageType));) { // Invoke all the functions that were collected in the block. for (cmListFileFunction const& fn : functions) { cmExecutionStatus status(mf); @@ -105,7 +110,7 @@ bool cmWhileFunctionBlocker::Replay(std::vector<cmListFileFunction> functions, } } - if (!errorString.empty()) { + if (!errorString.empty() && enforceError) { std::string err = "had incorrect arguments:\n "; for (auto const& i : expandedArguments) { err += " "; diff --git a/Tests/RunCMake/if/unbalanced-parenthesis-stderr.txt b/Tests/RunCMake/if/unbalanced-parenthesis-stderr.txt index 770ccb8..d2260a0 100644 --- a/Tests/RunCMake/if/unbalanced-parenthesis-stderr.txt +++ b/Tests/RunCMake/if/unbalanced-parenthesis-stderr.txt @@ -1,7 +1,7 @@ CMake Error at unbalanced-parenthesis\.cmake:[0-9]+ \(if\): if given arguments: - "NOT" "\(" "IN_LIST" "some_list" + "\(" mismatched parenthesis in condition Call Stack \(most recent call first\): diff --git a/Tests/RunCMake/if/unbalanced-parenthesis.cmake b/Tests/RunCMake/if/unbalanced-parenthesis.cmake index c51c755..45932f6 100644 --- a/Tests/RunCMake/if/unbalanced-parenthesis.cmake +++ b/Tests/RunCMake/if/unbalanced-parenthesis.cmake @@ -1,8 +1,5 @@ -set(var_with_paren "(") -set(some_list "") - -if(NOT ${var_with_paren} IN_LIST some_list) - message(STATUS "Never prints") -else() - message(STATUS "Never prints") +set(paren "(") +if(${paren}) + message(STATUS "Condition incorrectly true") endif() +message(STATUS "Code incorrectly accepted") diff --git a/Tests/RunCMake/while/unbalanced-parenthesis-result.txt b/Tests/RunCMake/while/unbalanced-parenthesis-result.txt deleted file mode 100644 index d00491f..0000000 --- a/Tests/RunCMake/while/unbalanced-parenthesis-result.txt +++ /dev/null @@ -1 +0,0 @@ -1 diff --git a/Tests/RunCMake/while/unbalanced-parenthesis-stderr.txt b/Tests/RunCMake/while/unbalanced-parenthesis-stderr.txt deleted file mode 100644 index 9d4132c..0000000 --- a/Tests/RunCMake/while/unbalanced-parenthesis-stderr.txt +++ /dev/null @@ -1,8 +0,0 @@ -CMake Error at unbalanced-parenthesis.cmake:[0-9]+ \(while\): - had incorrect arguments: - - "NOT" "\(" "IN_LIST" "some_list" - - mismatched parenthesis in condition -Call Stack \(most recent call first\): - CMakeLists\.txt:[0-9]+ \(include\) diff --git a/Tests/RunCMake/while/unbalanced-parenthesis-stdout.txt b/Tests/RunCMake/while/unbalanced-parenthesis-stdout.txt new file mode 100644 index 0000000..d45e194 --- /dev/null +++ b/Tests/RunCMake/while/unbalanced-parenthesis-stdout.txt @@ -0,0 +1 @@ +-- Code incorrectly accepted diff --git a/Tests/RunCMake/while/unbalanced-parenthesis.cmake b/Tests/RunCMake/while/unbalanced-parenthesis.cmake index 7a12701..39d736b 100644 --- a/Tests/RunCMake/while/unbalanced-parenthesis.cmake +++ b/Tests/RunCMake/while/unbalanced-parenthesis.cmake @@ -1,8 +1,7 @@ -set(var_with_paren "(") -set(some_list "") - -while(NOT ${var_with_paren} IN_LIST some_list) - message(STATUS "Never prints") +set(paren "(") +while(${paren}) + message(STATUS "Condition incorrectly true") + break() endwhile() - -message(STATUS "Never prints") +# FIXME(#23296): The above condition error is tolerated for compatibility. +message(STATUS "Code incorrectly accepted") |