Selaa lähdekoodia

Merge topic 'genex-fix-short-circuit' into release-3.28

27244a8f73 cmGeneratorExpressionNode: Fix short-circuit logic

Acked-by: Kitware Robot <[email protected]>
Acked-by: buildbot <[email protected]>
Merge-request: !8966
Brad King 2 vuotta sitten
vanhempi
sitoutus
baec1dac9b

+ 1 - 1
Source/cmGeneratorExpressionNode.cxx

@@ -131,7 +131,7 @@ struct BooleanOpNode : public cmGeneratorExpressionNode
   bool ShouldEvaluateNextParameter(const std::vector<std::string>& parameters,
                                    std::string& def_value) const override
   {
-    if (!parameters.empty() && parameters[0] == failureVal) {
+    if (!parameters.empty() && parameters.back() == failureVal) {
       def_value = failureVal;
       return false;
     }

+ 3 - 0
Tests/RunCMake/GeneratorExpressionShortCircuit/GoodAND.cmake

@@ -1,4 +1,7 @@
 set(error $<0>)
 add_custom_target(check ALL COMMAND check
   $<AND:0,${error}>
+  $<AND:0,1,${error}>
+  $<AND:1,0,${error}>
+  $<AND:0,0,${error}>
 )

+ 2 - 0
Tests/RunCMake/GeneratorExpressionShortCircuit/GoodOR.cmake

@@ -1,4 +1,6 @@
 set(error $<0>)
 add_custom_target(check ALL COMMAND check
   $<OR:1,${error}>
+  $<OR:0,1,${error}>
+  $<OR:1,0,${error}>
 )