mirror of
https://github.com/Kitware/CMake.git
synced 2026-04-21 21:58:50 -05:00
cmGeneratorExpressionNode: Fix short-circuit logic
Fix logic added by commit 634079b86d (cmGeneratorExpressionEvaluator:
Short-circuit boolean operators, 2023-09-11, v3.28.0-rc1~47^2) and
add missing test cases.
Fixes: #25412
This commit is contained in:
@@ -131,7 +131,7 @@ struct BooleanOpNode : public cmGeneratorExpressionNode
|
|||||||
bool ShouldEvaluateNextParameter(const std::vector<std::string>& parameters,
|
bool ShouldEvaluateNextParameter(const std::vector<std::string>& parameters,
|
||||||
std::string& def_value) const override
|
std::string& def_value) const override
|
||||||
{
|
{
|
||||||
if (!parameters.empty() && parameters[0] == failureVal) {
|
if (!parameters.empty() && parameters.back() == failureVal) {
|
||||||
def_value = failureVal;
|
def_value = failureVal;
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,4 +1,7 @@
|
|||||||
set(error $<0>)
|
set(error $<0>)
|
||||||
add_custom_target(check ALL COMMAND check
|
add_custom_target(check ALL COMMAND check
|
||||||
$<AND:0,${error}>
|
$<AND:0,${error}>
|
||||||
|
$<AND:0,1,${error}>
|
||||||
|
$<AND:1,0,${error}>
|
||||||
|
$<AND:0,0,${error}>
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -1,4 +1,6 @@
|
|||||||
set(error $<0>)
|
set(error $<0>)
|
||||||
add_custom_target(check ALL COMMAND check
|
add_custom_target(check ALL COMMAND check
|
||||||
$<OR:1,${error}>
|
$<OR:1,${error}>
|
||||||
|
$<OR:0,1,${error}>
|
||||||
|
$<OR:1,0,${error}>
|
||||||
)
|
)
|
||||||
|
|||||||
Reference in New Issue
Block a user