aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorGravatar Marcel Hlopko <hlopko@google.com>2017-01-03 15:39:31 +0000
committerGravatar John Cater <jcater@google.com>2017-01-03 16:43:45 +0000
commitddef343a34e712722bae3d312637bef96ada1880 (patch)
tree0a1cbe19564e5b4addabd20145700397d63ef710
parent8679e4c53889f8ccfa33dcb89ebc59c0e55c10ae (diff)
Do not expand flag_groups guarded by expand_if_true/false if variable is missing
-- PiperOrigin-RevId: 143443361 MOS_MIGRATED_REVID=143443361
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/cpp/CcToolchainFeatures.java8
-rw-r--r--src/test/java/com/google/devtools/build/lib/rules/cpp/CcToolchainFeaturesTest.java16
2 files changed, 20 insertions, 4 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcToolchainFeatures.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcToolchainFeatures.java
index 4e763cb538..3681be965b 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcToolchainFeatures.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcToolchainFeatures.java
@@ -431,13 +431,13 @@ public class CcToolchainFeatures implements Serializable {
}
}
if (expandIfTrue != null
- && variables.isAvailable(expandIfTrue)
- && !variables.getVariable(expandIfTrue).isTruthy()) {
+ && (!variables.isAvailable(expandIfTrue)
+ || !variables.getVariable(expandIfTrue).isTruthy())) {
return false;
}
if (expandIfFalse != null
- && variables.isAvailable(expandIfFalse)
- && variables.getVariable(expandIfFalse).isTruthy()) {
+ && (!variables.isAvailable(expandIfFalse)
+ || variables.getVariable(expandIfFalse).isTruthy())) {
return false;
}
if (expandIfEqual != null
diff --git a/src/test/java/com/google/devtools/build/lib/rules/cpp/CcToolchainFeaturesTest.java b/src/test/java/com/google/devtools/build/lib/rules/cpp/CcToolchainFeaturesTest.java
index 949aa4297b..2d5d4887d3 100644
--- a/src/test/java/com/google/devtools/build/lib/rules/cpp/CcToolchainFeaturesTest.java
+++ b/src/test/java/com/google/devtools/build/lib/rules/cpp/CcToolchainFeaturesTest.java
@@ -526,6 +526,22 @@ public class CcToolchainFeaturesTest {
}
@Test
+ public void testExpandIfTrueDoesntExpandIfMissing() throws Exception {
+ assertThat(
+ getCommandLineForFlagGroups(
+ "flag_group {"
+ + " expand_if_true: 'missing'"
+ + " flag: '-A%{missing}'"
+ + "}"
+ + "flag_group {"
+ + " expand_if_false: 'missing'"
+ + " flag: '-B%{missing}'"
+ + "}",
+ createVariables()))
+ .isEmpty();
+ }
+
+ @Test
public void testExpandIfTrueExpandsIfOne() throws Exception {
assertThat(
getCommandLineForFlagGroups(