aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build/lib/analysis/PlatformSemantics.java
diff options
context:
space:
mode:
authorGravatar cpeyser <cpeyser@google.com>2017-08-30 18:44:20 +0200
committerGravatar Vladimir Moskva <vladmos@google.com>2017-08-31 13:36:14 +0200
commit2b983bdf508e010a3d4ee9dbaf446b7666749799 (patch)
tree6029afbc0bf8114044958d1d900c617e8b8a428f /src/main/java/com/google/devtools/build/lib/analysis/PlatformSemantics.java
parentf12402b2627f8eeb70ee24f457efe007206f9b42 (diff)
Rollforward of c++ toolchain-relevant BUILD file and Bazel mocking changes. That is, a c++ toolchain is added, but a Bazel dependency on that toolchain is not.
PiperOrigin-RevId: 167006332
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/analysis/PlatformSemantics.java')
-rw-r--r--src/main/java/com/google/devtools/build/lib/analysis/PlatformSemantics.java10
1 files changed, 7 insertions, 3 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/PlatformSemantics.java b/src/main/java/com/google/devtools/build/lib/analysis/PlatformSemantics.java
index d93c5a6dea..45c967e551 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/PlatformSemantics.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/PlatformSemantics.java
@@ -26,6 +26,7 @@ import com.google.devtools.build.lib.packages.AttributeMap;
import com.google.devtools.build.lib.packages.Rule;
import com.google.devtools.build.lib.packages.RuleClass;
import java.util.List;
+import javax.annotation.Nullable;
/** Helper class to manage rules' use of platforms. */
public class PlatformSemantics {
@@ -40,19 +41,22 @@ public class PlatformSemantics {
@Override
public List<Label> resolve(
Rule rule, AttributeMap attributes, BuildConfiguration configuration) {
- if (rule.getRuleClassObject().getRequiredToolchains().isEmpty()) {
- return null;
+ // rule may be null for tests
+ if (rule == null || rule.getRuleClassObject().getRequiredToolchains().isEmpty()) {
+ return ImmutableList.of();
}
return configuration.getFragment(PlatformConfiguration.class).getTargetPlatforms();
}
};
/** Implementation for the :execution_platform attribute. */
+ @Nullable
public static final Attribute.LateBoundLabel<BuildConfiguration> EXECUTION_PLATFORM =
new Attribute.LateBoundLabel<BuildConfiguration>(PlatformConfiguration.class) {
@Override
public Label resolve(Rule rule, AttributeMap attributes, BuildConfiguration configuration) {
- if (rule.getRuleClassObject().getRequiredToolchains().isEmpty()) {
+ // rule may be null for tests
+ if (rule == null || rule.getRuleClassObject().getRequiredToolchains().isEmpty()) {
return null;
}
return configuration.getFragment(PlatformConfiguration.class).getExecutionPlatform();