diff options
author | gregce <gregce@google.com> | 2018-05-24 07:40:42 -0700 |
---|---|---|
committer | Copybara-Service <copybara-piper@google.com> | 2018-05-24 07:41:49 -0700 |
commit | d17b9aef01dd1e8a8b19da2e383c45db954db63a (patch) | |
tree | 2817a2534ad0087a530daf737dfc0a281abd626f /src/main/java/com/google/devtools/build/lib/analysis | |
parent | 17f8d4e5a36f5c4bd020ce9163f5b1db62679e2c (diff) |
Unfork SplitTransition / PatchTransition invocations.
Part of https://docs.google.com/document/d/1_UJKmAQ9EE8i3Pl0il3YLTYr-Q9EKYYyLatt2zohfyM/edit#
PiperOrigin-RevId: 197890685
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/analysis')
2 files changed, 7 insertions, 43 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/config/ConfigurationResolver.java b/src/main/java/com/google/devtools/build/lib/analysis/config/ConfigurationResolver.java index f26ca9f920..03052fb972 100644 --- a/src/main/java/com/google/devtools/build/lib/analysis/config/ConfigurationResolver.java +++ b/src/main/java/com/google/devtools/build/lib/analysis/config/ConfigurationResolver.java @@ -28,8 +28,6 @@ import com.google.devtools.build.lib.analysis.Dependency; import com.google.devtools.build.lib.analysis.TargetAndConfiguration; import com.google.devtools.build.lib.analysis.config.transitions.ConfigurationTransition; import com.google.devtools.build.lib.analysis.config.transitions.NoTransition; -import com.google.devtools.build.lib.analysis.config.transitions.PatchTransition; -import com.google.devtools.build.lib.analysis.config.transitions.SplitTransition; import com.google.devtools.build.lib.cmdline.Label; import com.google.devtools.build.lib.concurrent.ThreadSafety; import com.google.devtools.build.lib.events.Event; @@ -424,16 +422,9 @@ public final class ConfigurationResolver { ConfigurationTransition transition, Iterable<Class<? extends BuildConfiguration.Fragment>> requiredFragments, RuleClassProvider ruleClassProvider, boolean trimResults) { - List<BuildOptions> result; - if (transition instanceof PatchTransition) { - // TODO(bazel-team): safety-check that this never mutates fromOptions. - result = ImmutableList.of(((PatchTransition) transition).patch(fromOptions)); - } else if (transition instanceof SplitTransition) { - return ((SplitTransition) transition).split(fromOptions); - } else { - throw new IllegalStateException(String.format( - "unsupported config transition type: %s", transition.getClass().getName())); - } + + // TODO(bazel-team): safety-check that this never mutates fromOptions. + List<BuildOptions> result = transition.apply(fromOptions); if (!trimResults) { return result; diff --git a/src/main/java/com/google/devtools/build/lib/analysis/config/transitions/ComposingSplitTransition.java b/src/main/java/com/google/devtools/build/lib/analysis/config/transitions/ComposingSplitTransition.java index 190b867329..4eb6ae0e89 100644 --- a/src/main/java/com/google/devtools/build/lib/analysis/config/transitions/ComposingSplitTransition.java +++ b/src/main/java/com/google/devtools/build/lib/analysis/config/transitions/ComposingSplitTransition.java @@ -14,7 +14,6 @@ package com.google.devtools.build.lib.analysis.config.transitions; -import com.google.common.base.Preconditions; import com.google.common.collect.ImmutableList; import com.google.devtools.build.lib.analysis.config.BuildOptions; import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec; @@ -59,29 +58,19 @@ public class ComposingSplitTransition implements SplitTransition { @AutoCodec.Instantiator public ComposingSplitTransition( ConfigurationTransition transition1, ConfigurationTransition transition2) { - this.transition1 = verifySupported(transition1); - this.transition2 = verifySupported(transition2); + this.transition1 = transition1; + this.transition2 = transition2; } @Override public List<BuildOptions> split(BuildOptions buildOptions) { ImmutableList.Builder<BuildOptions> toOptions = ImmutableList.builder(); - for (BuildOptions transition1Options : apply(buildOptions, transition1)) { - toOptions.addAll(apply(transition1Options, transition2)); + for (BuildOptions transition1Options : transition1.apply(buildOptions)) { + toOptions.addAll(transition2.apply(transition1Options)); } return toOptions.build(); } - /** - * Verifies support for the given transition type. Throws an {@link IllegalArgumentException} if - * unsupported. - */ - private ConfigurationTransition verifySupported(ConfigurationTransition transition) { - Preconditions.checkArgument(transition instanceof PatchTransition - || transition instanceof SplitTransition); - return transition; - } - @Override public int hashCode() { return Objects.hash(transition1, transition2); @@ -111,20 +100,4 @@ public class ComposingSplitTransition implements SplitTransition { public ComposingPatchTransition asPatch() { return new ComposingPatchTransition(this); } - - /** - * Applies the given transition over the given {@link BuildOptions}, returns the result. - */ - // TODO(gregce): move this somewhere more general. This isn't intrinsic to composed splits. - static List<BuildOptions> apply(BuildOptions fromOptions, ConfigurationTransition transition) { - if (transition instanceof PatchTransition) { - return ImmutableList.<BuildOptions>of(((PatchTransition) transition).patch(fromOptions)); - } else if (transition instanceof SplitTransition) { - return ((SplitTransition) transition).split(fromOptions); - } else { - throw new IllegalStateException( - String.format("Unsupported composite transition type: %s", - transition.getClass().getName())); - } - } } |