From 27244a8f7385b97c38052495495a1e5aca11c485 Mon Sep 17 00:00:00 2001 From: Martin Duffy Date: Sun, 12 Nov 2023 20:01:30 -0500 Subject: 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 --- Source/cmGeneratorExpressionNode.cxx | 2 +- Tests/RunCMake/GeneratorExpressionShortCircuit/GoodAND.cmake | 3 +++ Tests/RunCMake/GeneratorExpressionShortCircuit/GoodOR.cmake | 2 ++ 3 files changed, 6 insertions(+), 1 deletion(-) diff --git a/Source/cmGeneratorExpressionNode.cxx b/Source/cmGeneratorExpressionNode.cxx index 57beb72..c8147b2 100644 --- a/Source/cmGeneratorExpressionNode.cxx +++ b/Source/cmGeneratorExpressionNode.cxx @@ -131,7 +131,7 @@ struct BooleanOpNode : public cmGeneratorExpressionNode bool ShouldEvaluateNextParameter(const std::vector& parameters, std::string& def_value) const override { - if (!parameters.empty() && parameters[0] == failureVal) { + if (!parameters.empty() && parameters.back() == failureVal) { def_value = failureVal; return false; } diff --git a/Tests/RunCMake/GeneratorExpressionShortCircuit/GoodAND.cmake b/Tests/RunCMake/GeneratorExpressionShortCircuit/GoodAND.cmake index 26bcaba..1827343 100644 --- a/Tests/RunCMake/GeneratorExpressionShortCircuit/GoodAND.cmake +++ b/Tests/RunCMake/GeneratorExpressionShortCircuit/GoodAND.cmake @@ -1,4 +1,7 @@ set(error $<0>) add_custom_target(check ALL COMMAND check $ + $ + $ + $ ) diff --git a/Tests/RunCMake/GeneratorExpressionShortCircuit/GoodOR.cmake b/Tests/RunCMake/GeneratorExpressionShortCircuit/GoodOR.cmake index b574937..db2fd52 100644 --- a/Tests/RunCMake/GeneratorExpressionShortCircuit/GoodOR.cmake +++ b/Tests/RunCMake/GeneratorExpressionShortCircuit/GoodOR.cmake @@ -1,4 +1,6 @@ set(error $<0>) add_custom_target(check ALL COMMAND check $ + $ + $ ) -- cgit v0.12