aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build/lib/analysis
diff options
context:
space:
mode:
authorGravatar gregce <gregce@google.com>2018-05-24 07:40:42 -0700
committerGravatar Copybara-Service <copybara-piper@google.com>2018-05-24 07:41:49 -0700
commitd17b9aef01dd1e8a8b19da2e383c45db954db63a (patch)
tree2817a2534ad0087a530daf737dfc0a281abd626f /src/main/java/com/google/devtools/build/lib/analysis
parent17f8d4e5a36f5c4bd020ce9163f5b1db62679e2c (diff)
Unfork SplitTransition / PatchTransition invocations.
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/analysis')
-rw-r--r--src/main/java/com/google/devtools/build/lib/analysis/config/ConfigurationResolver.java15
-rw-r--r--src/main/java/com/google/devtools/build/lib/analysis/config/transitions/ComposingSplitTransition.java35
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()));
- }
- }
}