diff options
author | gregce <gregce@google.com> | 2018-05-23 12:44:23 -0700 |
---|---|---|
committer | Copybara-Service <copybara-piper@google.com> | 2018-05-23 12:45:38 -0700 |
commit | 1cc0decbb00b28659a44bf474737eae1f871ac42 (patch) | |
tree | 931f005b50e9e19143712d00ed13b6b73cad7d2e /src/main/java/com/google/devtools/build/lib/analysis/DependencyResolver.java | |
parent | 29eafdfe329b300dc42fddafde87bddae2f07a4c (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.java | 29 |
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 |