diff options
author | 2017-01-03 15:39:31 +0000 | |
---|---|---|
committer | 2017-01-03 16:43:45 +0000 | |
commit | ddef343a34e712722bae3d312637bef96ada1880 (patch) | |
tree | 0a1cbe19564e5b4addabd20145700397d63ef710 | |
parent | 8679e4c53889f8ccfa33dcb89ebc59c0e55c10ae (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.java | 8 | ||||
-rw-r--r-- | src/test/java/com/google/devtools/build/lib/rules/cpp/CcToolchainFeaturesTest.java | 16 |
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( |