aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build/lib/analysis/DependencyResolver.java
diff options
context:
space:
mode:
authorGravatar gregce <gregce@google.com>2018-05-23 12:44:23 -0700
committerGravatar Copybara-Service <copybara-piper@google.com>2018-05-23 12:45:38 -0700
commit1cc0decbb00b28659a44bf474737eae1f871ac42 (patch)
tree931f005b50e9e19143712d00ed13b6b73cad7d2e /src/main/java/com/google/devtools/build/lib/analysis/DependencyResolver.java
parent29eafdfe329b300dc42fddafde87bddae2f07a4c (diff)
Simplify split transition semantics: noops now return the input build options.
This results in less special logic in the implementation and a simpler API. PiperOrigin-RevId: 197772283
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/analysis/DependencyResolver.java')
-rw-r--r--src/main/java/com/google/devtools/build/lib/analysis/DependencyResolver.java29
1 files changed, 9 insertions, 20 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/DependencyResolver.java b/src/main/java/com/google/devtools/build/lib/analysis/DependencyResolver.java
index dd34f19c09..a72b346cbc 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/DependencyResolver.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/DependencyResolver.java
@@ -403,8 +403,15 @@ public abstract class DependencyResolver {
LateBoundDefault<?, ?> lateBoundDefault = attribute.getLateBoundDefault();
- Collection<BuildOptions> splitOptions = getSplitOptions(attributeMap, attribute, ruleConfig);
- if (!splitOptions.isEmpty() && !ruleConfig.isHostConfiguration()) {
+ boolean hasSplitTransition = false;
+ List<BuildOptions> splitOptions = null;
+ if (attribute.hasSplitConfigurationTransition()) {
+ splitOptions =
+ attribute.getSplitTransition(attributeMap).checkedSplit(ruleConfig.getOptions());
+ hasSplitTransition = !SplitTransition.equals(ruleConfig.getOptions(), splitOptions);
+ }
+
+ if (hasSplitTransition && !ruleConfig.isHostConfiguration()) {
// Late-bound attribute with a split transition:
// Since we want to get the same results as TransitionResolver.evaluateTransition (but
// skip it since we've already applied the split), we want to make sure this logic
@@ -449,24 +456,6 @@ public abstract class DependencyResolver {
}
/**
- * Returns the BuildOptions if the rule's attribute triggers a split in this configuration, or
- * the empty collection if the attribute does not trigger a split transition or if the split
- * transition does not apply.
- *
- * <p>Even though the attribute may have a split, splits don't have to apply in every
- * configuration (see {@link SplitTransition#split}).
- */
- private static Collection<BuildOptions> getSplitOptions(ConfiguredAttributeMapper attributeMap,
- Attribute attribute,
- BuildConfiguration ruleConfig) {
- if (!attribute.hasSplitConfigurationTransition()) {
- return ImmutableList.<BuildOptions>of();
- }
- SplitTransition transition = attribute.getSplitTransition(attributeMap);
- return transition.split(ruleConfig.getOptions());
- }
-
- /**
* Returns the label dependencies for the given late-bound attribute in this rule.
*
* @param rule the rule being evaluated