diff options
author | 2018-05-29 10:47:33 -0700 | |
---|---|---|
committer | 2018-05-29 10:48:55 -0700 | |
commit | 2cb4f48dc5f674a4a99228cce7ca04aef5a0c335 (patch) | |
tree | 2053329c31e35c3a8ad64f6cf6f258e8aefeae33 /src/main/java/com/google/devtools/build/lib/analysis/config/ComposingRuleTransitionFactory.java | |
parent | 6d33f2874eb1647526557d291496e78163d94095 (diff) |
Merge ComposingSplitTransition and ComposingPatchTransition.
Part of https://docs.google.com/document/d/1_UJKmAQ9EE8i3Pl0il3YLTYr-Q9EKYYyLatt2zohfyM/edit#
PiperOrigin-RevId: 198420365
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/analysis/config/ComposingRuleTransitionFactory.java')
-rw-r--r-- | src/main/java/com/google/devtools/build/lib/analysis/config/ComposingRuleTransitionFactory.java | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/config/ComposingRuleTransitionFactory.java b/src/main/java/com/google/devtools/build/lib/analysis/config/ComposingRuleTransitionFactory.java index ec8cfc35f6..51dfa176c4 100644 --- a/src/main/java/com/google/devtools/build/lib/analysis/config/ComposingRuleTransitionFactory.java +++ b/src/main/java/com/google/devtools/build/lib/analysis/config/ComposingRuleTransitionFactory.java @@ -15,6 +15,8 @@ package com.google.devtools.build.lib.analysis.config; +import com.google.common.collect.Iterables; +import com.google.devtools.build.lib.analysis.config.transitions.ConfigurationTransition; import com.google.devtools.build.lib.analysis.config.transitions.PatchTransition; import com.google.devtools.build.lib.packages.Rule; import com.google.devtools.build.lib.packages.RuleTransitionFactory; @@ -38,7 +40,15 @@ public class ComposingRuleTransitionFactory implements RuleTransitionFactory { @Override public PatchTransition buildTransitionFor(Rule rule) { - return TransitionResolver.composePatchTransitions( + ConfigurationTransition composedTransition = TransitionResolver.composeTransitions( rtf1.buildTransitionFor(rule), rtf2.buildTransitionFor(rule)); + // Even though we know the composed transition isn't a split (because neither of its children + // can be splits), the returned type is a generic ConfigurationTransition. So cast that back to + // a PatchTransition here. + // + // We could alternatively change RuleTransitionFactory's signature to a ConfigurationTransition. + // But it's nice to strongly enforce the interface expectation that rule transitions don't + // split. + return (BuildOptions options) -> Iterables.getOnlyElement(composedTransition.apply(options)); } } |