Replace Attribute.SplitTransition with config.transitions.SplitTransition. PiperOrigin-RevId: 179948322
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 7b9d60d..d268e7d 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
@@ -27,6 +27,7 @@ import com.google.devtools.build.lib.analysis.config.InvalidConfigurationException; import com.google.devtools.build.lib.analysis.config.PatchTransition; import com.google.devtools.build.lib.analysis.config.TransitionResolver; +import com.google.devtools.build.lib.analysis.config.transitions.SplitTransition; import com.google.devtools.build.lib.analysis.config.transitions.Transition; import com.google.devtools.build.lib.cmdline.Label; import com.google.devtools.build.lib.collect.nestedset.NestedSetBuilder; @@ -422,7 +423,7 @@ * transition does not apply. * * <p>Even though the attribute may have a split, splits don't have to apply in every - * configuration (see {@link Attribute.SplitTransition#split}). + * configuration (see {@link SplitTransition#split}). */ private static Collection<BuildOptions> getSplitOptions(ConfiguredAttributeMapper attributeMap, Attribute attribute, @@ -430,9 +431,7 @@ if (!attribute.hasSplitConfigurationTransition()) { return ImmutableList.<BuildOptions>of(); } - @SuppressWarnings("unchecked") // Attribute.java doesn't have the BuildOptions symbol. - Attribute.SplitTransition<BuildOptions> transition = - (Attribute.SplitTransition<BuildOptions>) attribute.getSplitTransition(attributeMap); + SplitTransition transition = attribute.getSplitTransition(attributeMap); return transition.split(ruleConfig.getOptions()); }
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/RuleContext.java b/src/main/java/com/google/devtools/build/lib/analysis/RuleContext.java index 6abf491..ce2569a 100644 --- a/src/main/java/com/google/devtools/build/lib/analysis/RuleContext.java +++ b/src/main/java/com/google/devtools/build/lib/analysis/RuleContext.java
@@ -47,6 +47,7 @@ import com.google.devtools.build.lib.analysis.config.ConfigMatchingProvider; import com.google.devtools.build.lib.analysis.config.FragmentCollection; import com.google.devtools.build.lib.analysis.config.PatchTransition; +import com.google.devtools.build.lib.analysis.config.transitions.SplitTransition; import com.google.devtools.build.lib.analysis.config.transitions.Transition; import com.google.devtools.build.lib.analysis.configuredtargets.RuleConfiguredTarget.Mode; import com.google.devtools.build.lib.analysis.fileset.FilesetProvider; @@ -65,7 +66,6 @@ import com.google.devtools.build.lib.packages.AspectDescriptor; import com.google.devtools.build.lib.packages.Attribute; import com.google.devtools.build.lib.packages.Attribute.ConfigurationTransition; -import com.google.devtools.build.lib.packages.Attribute.SplitTransition; import com.google.devtools.build.lib.packages.AttributeMap; import com.google.devtools.build.lib.packages.BuildType; import com.google.devtools.build.lib.packages.ConfigurationFragmentPolicy; @@ -768,10 +768,8 @@ checkAttribute(attributeName, Mode.SPLIT); Attribute attributeDefinition = attributes().getAttributeDefinition(attributeName); - @SuppressWarnings("unchecked") // Attribute.java doesn't have the BuildOptions symbol. - SplitTransition<BuildOptions> transition = - (SplitTransition<BuildOptions>) attributeDefinition.getSplitTransition( - ConfiguredAttributeMapper.of(rule, configConditions)); + SplitTransition transition = attributeDefinition.getSplitTransition( + ConfiguredAttributeMapper.of(rule, configConditions)); List<ConfiguredTarget> deps = targetMap.get(attributeName); List<BuildOptions> splitOptions = transition.split(getConfiguration().getOptions());
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/config/ComposingSplitTransition.java b/src/main/java/com/google/devtools/build/lib/analysis/config/ComposingSplitTransition.java index b984ee4..41cb44d 100644 --- a/src/main/java/com/google/devtools/build/lib/analysis/config/ComposingSplitTransition.java +++ b/src/main/java/com/google/devtools/build/lib/analysis/config/ComposingSplitTransition.java
@@ -16,9 +16,9 @@ import com.google.common.base.Preconditions; import com.google.common.collect.ImmutableList; +import com.google.devtools.build.lib.analysis.config.transitions.SplitTransition; import com.google.devtools.build.lib.analysis.config.transitions.Transition; import com.google.devtools.build.lib.packages.Attribute.ConfigurationTransition; -import com.google.devtools.build.lib.packages.Attribute.SplitTransition; import java.util.List; /** @@ -35,7 +35,7 @@ * combination thereof. We implement this class as a {@link SplitTransition} since that abstraction * captures all possible combinations. */ -public class ComposingSplitTransition implements SplitTransition<BuildOptions> { +public class ComposingSplitTransition implements SplitTransition { private Transition transition1; private Transition transition2; @@ -63,7 +63,7 @@ */ private Transition verifySupported(Transition transition) { Preconditions.checkArgument(transition instanceof PatchTransition - || transition instanceof SplitTransition<?>); + || transition instanceof SplitTransition); return transition; } @@ -77,7 +77,7 @@ } else if (transition instanceof PatchTransition) { return ImmutableList.<BuildOptions>of(((PatchTransition) transition).apply(fromOptions)); } else if (transition instanceof SplitTransition) { - SplitTransition split = (SplitTransition<BuildOptions>) transition; + SplitTransition split = (SplitTransition) transition; List<BuildOptions> splitOptions = split.split(fromOptions); if (splitOptions.isEmpty()) { return ImmutableList.<BuildOptions>of(fromOptions); @@ -91,4 +91,3 @@ } } } -
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 9a16f0b..d09219e 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
@@ -26,6 +26,7 @@ import com.google.common.collect.Sets; 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.SplitTransition; import com.google.devtools.build.lib.analysis.config.transitions.Transition; import com.google.devtools.build.lib.cmdline.Label; import com.google.devtools.build.lib.concurrent.ThreadSafety; @@ -417,10 +418,8 @@ } else if (transition instanceof PatchTransition) { // TODO(bazel-team): safety-check that this never mutates fromOptions. result = ImmutableList.<BuildOptions>of(((PatchTransition) transition).apply(fromOptions)); - } else if (transition instanceof Attribute.SplitTransition) { - @SuppressWarnings("unchecked") // Attribute.java doesn't have the BuildOptions symbol. - List<BuildOptions> toOptions = - ((Attribute.SplitTransition<BuildOptions>) transition).split(fromOptions); + } else if (transition instanceof SplitTransition) { + List<BuildOptions> toOptions = ((SplitTransition) transition).split(fromOptions); if (toOptions.isEmpty()) { // When the split returns an empty list, it's signaling it doesn't apply to this instance. // So return the original options.
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/config/DynamicTransitionMapper.java b/src/main/java/com/google/devtools/build/lib/analysis/config/DynamicTransitionMapper.java index 0ccb19a..4c49201 100644 --- a/src/main/java/com/google/devtools/build/lib/analysis/config/DynamicTransitionMapper.java +++ b/src/main/java/com/google/devtools/build/lib/analysis/config/DynamicTransitionMapper.java
@@ -14,6 +14,7 @@ package com.google.devtools.build.lib.analysis.config; import com.google.common.collect.ImmutableMap; +import com.google.devtools.build.lib.analysis.config.transitions.SplitTransition; import com.google.devtools.build.lib.analysis.config.transitions.Transition; import com.google.devtools.build.lib.packages.Attribute; import com.google.devtools.build.lib.packages.RuleClass; @@ -72,7 +73,7 @@ */ public Transition map(Transition fromTransition) { if (fromTransition instanceof PatchTransition - || fromTransition instanceof Attribute.SplitTransition<?> + || fromTransition instanceof SplitTransition || fromTransition == null) { return fromTransition; }
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/config/TransitionResolver.java b/src/main/java/com/google/devtools/build/lib/analysis/config/TransitionResolver.java index b84c5db..27c3548 100644 --- a/src/main/java/com/google/devtools/build/lib/analysis/config/TransitionResolver.java +++ b/src/main/java/com/google/devtools/build/lib/analysis/config/TransitionResolver.java
@@ -17,10 +17,10 @@ import com.google.common.annotations.VisibleForTesting; import com.google.common.base.Preconditions; import com.google.devtools.build.lib.analysis.TargetAndConfiguration; +import com.google.devtools.build.lib.analysis.config.transitions.SplitTransition; import com.google.devtools.build.lib.analysis.config.transitions.Transition; import com.google.devtools.build.lib.packages.Attribute; import com.google.devtools.build.lib.packages.Attribute.ConfigurationTransition; -import com.google.devtools.build.lib.packages.Attribute.SplitTransition; import com.google.devtools.build.lib.packages.ConfiguredAttributeMapper; import com.google.devtools.build.lib.packages.InputFile; import com.google.devtools.build.lib.packages.PackageGroup; @@ -112,8 +112,7 @@ // TODO(gregce): make the below transitions composable (i.e. take away the "else" clauses). // The "else" is a legacy restriction from static configurations. if (attribute.hasSplitConfigurationTransition()) { - currentTransition = split(currentTransition, - (SplitTransition<BuildOptions>) attribute.getSplitTransition(attributeMap)); + currentTransition = split(currentTransition, attribute.getSplitTransition(attributeMap)); } else { // III. Attributes determine configurations. The configuration of a prerequisite is determined // by the attribute. @@ -195,8 +194,7 @@ /** * Applies the given split and composes it after an existing transition. */ - private static Transition split(Transition currentTransition, - SplitTransition<BuildOptions> split) { + private static Transition split(Transition currentTransition, SplitTransition split) { Preconditions.checkState(currentTransition != Attribute.ConfigurationTransition.NULL, "cannot apply splits after null transitions (null transitions are expected to be final)"); Preconditions.checkState(currentTransition != HostTransition.INSTANCE,
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/config/transitions/SplitTransition.java b/src/main/java/com/google/devtools/build/lib/analysis/config/transitions/SplitTransition.java index 9dc4eee..dd1cea1 100644 --- a/src/main/java/com/google/devtools/build/lib/analysis/config/transitions/SplitTransition.java +++ b/src/main/java/com/google/devtools/build/lib/analysis/config/transitions/SplitTransition.java
@@ -24,6 +24,7 @@ * handle this. */ @ThreadSafety.Immutable +@FunctionalInterface public interface SplitTransition extends Transition { /** * Return the list of {@code BuildOptions} after splitting; empty if not applicable.
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/skylark/SkylarkAttr.java b/src/main/java/com/google/devtools/build/lib/analysis/skylark/SkylarkAttr.java index b04a855..78e393f 100644 --- a/src/main/java/com/google/devtools/build/lib/analysis/skylark/SkylarkAttr.java +++ b/src/main/java/com/google/devtools/build/lib/analysis/skylark/SkylarkAttr.java
@@ -20,13 +20,13 @@ import com.google.common.collect.ImmutableSet; import com.google.common.collect.Iterables; import com.google.devtools.build.lib.analysis.config.HostTransition; +import com.google.devtools.build.lib.analysis.config.transitions.SplitTransition; import com.google.devtools.build.lib.cmdline.Label; import com.google.devtools.build.lib.events.Location; import com.google.devtools.build.lib.packages.Attribute; import com.google.devtools.build.lib.packages.Attribute.AllowedValueSet; import com.google.devtools.build.lib.packages.Attribute.ConfigurationTransition; import com.google.devtools.build.lib.packages.Attribute.SkylarkComputedDefaultTemplate; -import com.google.devtools.build.lib.packages.Attribute.SplitTransition; import com.google.devtools.build.lib.packages.Attribute.SplitTransitionProvider; import com.google.devtools.build.lib.packages.AttributeValueSource; import com.google.devtools.build.lib.packages.BuildType; @@ -298,8 +298,8 @@ builder.cfg(ConfigurationTransition.DATA); } else if (trans.equals("host")) { builder.cfg(HostTransition.INSTANCE); - } else if (trans instanceof SplitTransition<?>) { - builder.cfg((SplitTransition<?>) trans); + } else if (trans instanceof SplitTransition) { + builder.cfg((SplitTransition) trans); } else if (trans instanceof SplitTransitionProvider) { builder.cfg((SplitTransitionProvider) trans); } else if (!trans.equals("target")) {
diff --git a/src/main/java/com/google/devtools/build/lib/packages/Attribute.java b/src/main/java/com/google/devtools/build/lib/packages/Attribute.java index b736613..38fdda7 100644 --- a/src/main/java/com/google/devtools/build/lib/packages/Attribute.java +++ b/src/main/java/com/google/devtools/build/lib/packages/Attribute.java
@@ -29,8 +29,8 @@ import com.google.common.collect.Ordering; import com.google.common.collect.Sets; import com.google.devtools.build.lib.analysis.TransitiveInfoProvider; +import com.google.devtools.build.lib.analysis.config.transitions.SplitTransition; import com.google.devtools.build.lib.analysis.config.transitions.Transition; -import com.google.devtools.build.lib.concurrent.ThreadSafety; import com.google.devtools.build.lib.events.EventHandler; import com.google.devtools.build.lib.events.Location; import com.google.devtools.build.lib.packages.RuleClass.Builder.RuleClassNamePredicate; @@ -148,23 +148,6 @@ } /** - * A configuration split transition; this should be used to transition to multiple configurations - * simultaneously. Note that the corresponding rule implementations must have special support to - * handle this. - * - * <p>{@code T} must always be {@code BuildOptions}, but it can't be defined that way because - * the symbol isn't available here. - */ - // TODO(bazel-team): Serializability constraints? - @ThreadSafety.Immutable - public interface SplitTransition<T> extends Transition { - /** - * Return the list of {@code BuildOptions} after splitting; empty if not applicable. - */ - List<T> split(T buildOptions); - } - - /** * Declaration how the configuration should change when following a label or label list attribute. * * <p>Do not add to this. Use {@link @@ -316,7 +299,7 @@ /** * Returns the {@link SplitTransition} given the attribute mapper of the originating rule. */ - SplitTransition<?> apply(AttributeMap attributeMap); + SplitTransition apply(AttributeMap attributeMap); } /** @@ -325,14 +308,14 @@ */ private static class BasicSplitTransitionProvider implements SplitTransitionProvider { - private final SplitTransition<?> splitTransition; + private final SplitTransition splitTransition; - BasicSplitTransitionProvider(SplitTransition<?> splitTransition) { + BasicSplitTransitionProvider(SplitTransition splitTransition) { this.splitTransition = splitTransition; } @Override - public SplitTransition<?> apply(AttributeMap attributeMap) { + public SplitTransition apply(AttributeMap attributeMap) { return splitTransition; } } @@ -533,7 +516,7 @@ * Defines the configuration transition for this attribute. Defaults to * {@code NONE}. */ - public Builder<TYPE> cfg(SplitTransition<?> configTransition) { + public Builder<TYPE> cfg(SplitTransition configTransition) { return cfg(new BasicSplitTransitionProvider(Preconditions.checkNotNull(configTransition))); } @@ -547,7 +530,7 @@ Preconditions.checkArgument(configTransition != ConfigurationTransition.SPLIT, "split transitions must be defined using the SplitTransition object"); if (configTransition instanceof SplitTransition) { - return cfg((SplitTransition<?>) configTransition); + return cfg((SplitTransition) configTransition); } else { this.configTransition = configTransition; return this; @@ -1971,7 +1954,7 @@ * @return a SplitTransition<BuildOptions> object * @throws IllegalStateException if {@link #hasSplitConfigurationTransition} is not true */ - public SplitTransition<?> getSplitTransition(AttributeMap attributeMapper) { + public SplitTransition getSplitTransition(AttributeMap attributeMapper) { Preconditions.checkState(hasSplitConfigurationTransition()); return splitTransitionProvider.apply(attributeMapper); }
diff --git a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidRuleClasses.java b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidRuleClasses.java index 6a8a0a9..c08da7a 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidRuleClasses.java +++ b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidRuleClasses.java
@@ -37,13 +37,13 @@ import com.google.devtools.build.lib.analysis.config.BuildConfiguration; import com.google.devtools.build.lib.analysis.config.BuildOptions; import com.google.devtools.build.lib.analysis.config.HostTransition; +import com.google.devtools.build.lib.analysis.config.transitions.SplitTransition; import com.google.devtools.build.lib.analysis.config.transitions.Transition; import com.google.devtools.build.lib.cmdline.Label; import com.google.devtools.build.lib.events.EventHandler; import com.google.devtools.build.lib.packages.Attribute; import com.google.devtools.build.lib.packages.Attribute.AllowedValueSet; import com.google.devtools.build.lib.packages.Attribute.LateBoundDefault; -import com.google.devtools.build.lib.packages.Attribute.SplitTransition; import com.google.devtools.build.lib.packages.AttributeMap; import com.google.devtools.build.lib.packages.ImplicitOutputsFunction.SafeImplicitOutputsFunction; import com.google.devtools.build.lib.packages.Rule; @@ -206,11 +206,9 @@ (rule, attributes, configuration) -> configuration.getSdk()); } - public static final SplitTransition<BuildOptions> ANDROID_SPLIT_TRANSITION = - new AndroidSplitTransition(); + public static final SplitTransition ANDROID_SPLIT_TRANSITION = new AndroidSplitTransition(); - private static final class AndroidSplitTransition - implements SplitTransition<BuildOptions>, SkylarkValue { + private static final class AndroidSplitTransition implements SplitTransition, SkylarkValue { private static void setCrosstoolToAndroid(BuildOptions output, BuildOptions input) { AndroidConfiguration.Options inputAndroidOptions = input.get(AndroidConfiguration.Options.class);
diff --git a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidSkylarkCommon.java b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidSkylarkCommon.java index fe8a9dd..be66ad6 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidSkylarkCommon.java +++ b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidSkylarkCommon.java
@@ -14,8 +14,7 @@ package com.google.devtools.build.lib.rules.android; import com.google.devtools.build.lib.actions.Artifact; -import com.google.devtools.build.lib.analysis.config.BuildOptions; -import com.google.devtools.build.lib.packages.Attribute.SplitTransition; +import com.google.devtools.build.lib.analysis.config.transitions.SplitTransition; import com.google.devtools.build.lib.skylarkinterface.SkylarkCallable; import com.google.devtools.build.lib.skylarkinterface.SkylarkModule; import com.google.devtools.build.lib.vfs.PathFragment; @@ -47,7 +46,7 @@ + "the --fat_apk_cpu and --android_crosstool_top flags.", structField = true ) - public SplitTransition<BuildOptions> getAndroidSplitTransition() { + public SplitTransition getAndroidSplitTransition() { return AndroidRuleClasses.ANDROID_SPLIT_TRANSITION; } }
diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/MultiArchSplitTransitionProvider.java b/src/main/java/com/google/devtools/build/lib/rules/objc/MultiArchSplitTransitionProvider.java index 394c220..8284011 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/objc/MultiArchSplitTransitionProvider.java +++ b/src/main/java/com/google/devtools/build/lib/rules/objc/MultiArchSplitTransitionProvider.java
@@ -24,7 +24,7 @@ import com.google.devtools.build.lib.analysis.RuleContext; import com.google.devtools.build.lib.analysis.config.BuildConfiguration.Options; import com.google.devtools.build.lib.analysis.config.BuildOptions; -import com.google.devtools.build.lib.packages.Attribute.SplitTransition; +import com.google.devtools.build.lib.analysis.config.transitions.SplitTransition; import com.google.devtools.build.lib.packages.Attribute.SplitTransitionProvider; import com.google.devtools.build.lib.packages.AttributeMap; import com.google.devtools.build.lib.packages.RuleClass.ConfiguredTargetFactory.RuleErrorException; @@ -125,7 +125,7 @@ } @Override - public SplitTransition<?> apply(AttributeMap attrMapper) { + public SplitTransition apply(AttributeMap attrMapper) { String platformTypeString = attrMapper.get(PlatformRule.PLATFORM_TYPE_ATTR_NAME, STRING); String minimumOsVersionString = attrMapper.get(PlatformRule.MINIMUM_OS_VERSION, STRING); PlatformType platformType; @@ -164,7 +164,7 @@ * platform-specific cpu flag for a particular platform type (for example, --watchos_cpus * for watchos platform type). */ - protected static class AppleBinaryTransition implements SplitTransition<BuildOptions> { + protected static class AppleBinaryTransition implements SplitTransition { private final PlatformType platformType; // TODO(b/37096178): This should be a mandatory attribute.
diff --git a/src/test/java/com/google/devtools/build/lib/analysis/LateBoundSplitUtil.java b/src/test/java/com/google/devtools/build/lib/analysis/LateBoundSplitUtil.java index 4296f10..a721f4e 100644 --- a/src/test/java/com/google/devtools/build/lib/analysis/LateBoundSplitUtil.java +++ b/src/test/java/com/google/devtools/build/lib/analysis/LateBoundSplitUtil.java
@@ -24,6 +24,7 @@ import com.google.devtools.build.lib.analysis.config.ConfigurationFragmentFactory; import com.google.devtools.build.lib.analysis.config.FragmentOptions; import com.google.devtools.build.lib.analysis.config.InvalidConfigurationException; +import com.google.devtools.build.lib.analysis.config.transitions.SplitTransition; import com.google.devtools.build.lib.analysis.util.MockRule; import com.google.devtools.build.lib.cmdline.Label; import com.google.devtools.build.lib.packages.Attribute; @@ -33,7 +34,6 @@ import com.google.devtools.common.options.Option; import com.google.devtools.common.options.OptionDocumentationCategory; import com.google.devtools.common.options.OptionEffectTag; -import java.util.List; /** * Rule and configuration class definitions for testing late-bound split attributes. @@ -55,17 +55,14 @@ /** * The split. */ - private static final Attribute.SplitTransition<BuildOptions> SIMPLE_SPLIT = - new Attribute.SplitTransition<BuildOptions>() { - @Override - public List<BuildOptions> split(BuildOptions buildOptions) { - BuildOptions split1 = buildOptions.clone(); - split1.get(TestOptions.class).fooFlag = "one"; - BuildOptions split2 = buildOptions.clone(); - split2.get(TestOptions.class).fooFlag = "two"; - return ImmutableList.<BuildOptions>of(split1, split2); - } - }; + private static final SplitTransition SIMPLE_SPLIT = + (SplitTransition) buildOptions -> { + BuildOptions split1 = buildOptions.clone(); + split1.get(TestOptions.class).fooFlag = "one"; + BuildOptions split2 = buildOptions.clone(); + split2.get(TestOptions.class).fooFlag = "two"; + return ImmutableList.of(split1, split2); + }; /** * The {@link BuildConfiguration.Fragment} that contains the options.
diff --git a/src/test/java/com/google/devtools/build/lib/packages/AttributeTest.java b/src/test/java/com/google/devtools/build/lib/packages/AttributeTest.java index 4adef68..f4b5662 100644 --- a/src/test/java/com/google/devtools/build/lib/packages/AttributeTest.java +++ b/src/test/java/com/google/devtools/build/lib/packages/AttributeTest.java
@@ -27,9 +27,9 @@ import com.google.common.collect.ImmutableList; import com.google.devtools.build.lib.analysis.config.BuildOptions; import com.google.devtools.build.lib.analysis.config.HostTransition; +import com.google.devtools.build.lib.analysis.config.transitions.SplitTransition; import com.google.devtools.build.lib.analysis.util.TestAspects; import com.google.devtools.build.lib.cmdline.Label; -import com.google.devtools.build.lib.packages.Attribute.SplitTransition; import com.google.devtools.build.lib.packages.Attribute.SplitTransitionProvider; import com.google.devtools.build.lib.packages.RuleClass.Builder.RuleClassNamePredicate; import com.google.devtools.build.lib.syntax.Type; @@ -295,7 +295,7 @@ assertThat(attr.hasSplitConfigurationTransition()).isFalse(); } - private static class TestSplitTransition implements SplitTransition<BuildOptions> { + private static class TestSplitTransition implements SplitTransition { @Override public List<BuildOptions> split(BuildOptions buildOptions) { return ImmutableList.of(buildOptions.clone(), buildOptions.clone()); @@ -304,7 +304,7 @@ private static class TestSplitTransitionProvider implements SplitTransitionProvider { @Override - public SplitTransition<?> apply(AttributeMap attrMapper) { + public SplitTransition apply(AttributeMap attrMapper) { return new TestSplitTransition(); } }
diff --git a/src/test/java/com/google/devtools/build/lib/rules/objc/ObjcRuleTestCase.java b/src/test/java/com/google/devtools/build/lib/rules/objc/ObjcRuleTestCase.java index c5577e7..74b5a4d 100644 --- a/src/test/java/com/google/devtools/build/lib/rules/objc/ObjcRuleTestCase.java +++ b/src/test/java/com/google/devtools/build/lib/rules/objc/ObjcRuleTestCase.java
@@ -74,11 +74,11 @@ import com.google.devtools.build.lib.analysis.config.BuildConfiguration; import com.google.devtools.build.lib.analysis.config.BuildOptions; import com.google.devtools.build.lib.analysis.config.CompilationMode; +import com.google.devtools.build.lib.analysis.config.transitions.SplitTransition; import com.google.devtools.build.lib.analysis.util.BuildViewTestCase; import com.google.devtools.build.lib.analysis.util.ScratchAttributeWriter; import com.google.devtools.build.lib.cmdline.Label; import com.google.devtools.build.lib.cmdline.RepositoryName; -import com.google.devtools.build.lib.packages.Attribute.SplitTransition; import com.google.devtools.build.lib.packages.util.MockJ2ObjcSupport; import com.google.devtools.build.lib.packages.util.MockObjcSupport; import com.google.devtools.build.lib.packages.util.MockProtoSupport; @@ -420,7 +420,7 @@ * configuration. */ protected List<BuildConfiguration> getSplitConfigurations(BuildConfiguration configuration, - SplitTransition<BuildOptions> splitTransition) throws InterruptedException { + SplitTransition splitTransition) throws InterruptedException { ImmutableList.Builder<BuildConfiguration> splitConfigs = ImmutableList.builder(); for (BuildOptions splitOptions : splitTransition.split(configuration.getOptions())) {
diff --git a/src/test/java/com/google/devtools/build/lib/skyframe/ConfigurationsForTargetsWithTrimmedConfigurationsTest.java b/src/test/java/com/google/devtools/build/lib/skyframe/ConfigurationsForTargetsWithTrimmedConfigurationsTest.java index 56c4d29..64e141d 100644 --- a/src/test/java/com/google/devtools/build/lib/skyframe/ConfigurationsForTargetsWithTrimmedConfigurationsTest.java +++ b/src/test/java/com/google/devtools/build/lib/skyframe/ConfigurationsForTargetsWithTrimmedConfigurationsTest.java
@@ -31,6 +31,7 @@ import com.google.devtools.build.lib.analysis.config.ConfigurationResolver; import com.google.devtools.build.lib.analysis.config.PatchTransition; import com.google.devtools.build.lib.analysis.config.TransitionResolver; +import com.google.devtools.build.lib.analysis.config.transitions.SplitTransition; import com.google.devtools.build.lib.analysis.config.transitions.Transition; import com.google.devtools.build.lib.analysis.test.TestConfiguration; import com.google.devtools.build.lib.analysis.util.MockRule; @@ -38,8 +39,6 @@ import com.google.devtools.build.lib.analysis.util.TestAspects; import com.google.devtools.build.lib.analysis.util.TestAspects.DummyRuleFactory; import com.google.devtools.build.lib.cmdline.Label; -import com.google.devtools.build.lib.packages.Attribute; -import com.google.devtools.build.lib.packages.Attribute.SplitTransition; import com.google.devtools.build.lib.packages.NonconfigurableAttributeMapper; import com.google.devtools.build.lib.packages.Rule; import com.google.devtools.build.lib.packages.RuleTransitionFactory; @@ -70,14 +69,14 @@ return super.defaultFlags().with(Flag.TRIMMED_CONFIGURATIONS); } - private static class EmptySplitTransition implements SplitTransition<BuildOptions> { + private static class EmptySplitTransition implements SplitTransition { @Override public List<BuildOptions> split(BuildOptions buildOptions) { return ImmutableList.of(); } } - private static class SetsHostCpuSplitTransition implements SplitTransition<BuildOptions> { + private static class SetsHostCpuSplitTransition implements SplitTransition { @Override public List<BuildOptions> split(BuildOptions buildOptions) { BuildOptions result = buildOptions.clone(); @@ -86,7 +85,7 @@ } } - private static class SetsCpuSplitTransition implements SplitTransition<BuildOptions> { + private static class SetsCpuSplitTransition implements SplitTransition { @Override public List<BuildOptions> split(BuildOptions buildOptions) { @@ -368,25 +367,22 @@ } /** - * Returns a custom {@link Attribute.SplitTransition} that splits {@link + * Returns a custom {@link SplitTransition} that splits {@link * TestConfiguration.TestOptions#testFilter} down two paths: {@code += prefix + "1"} and {@code += * prefix + "2"}. */ - private static Attribute.SplitTransition<BuildOptions> newSplitTransition(final String prefix) { - return new Attribute.SplitTransition<BuildOptions>() { - @Override - public List<BuildOptions> split(BuildOptions buildOptions) { - ImmutableList.Builder<BuildOptions> result = ImmutableList.builder(); - for (int index = 1; index <= 2; index++) { - BuildOptions toOptions = buildOptions.clone(); - TestConfiguration.TestOptions baseOptions = - toOptions.get(TestConfiguration.TestOptions.class); - baseOptions.testFilter = - (baseOptions.testFilter == null ? "" : baseOptions.testFilter) + prefix + index; - result.add(toOptions); - } - return result.build(); + private static SplitTransition newSplitTransition(final String prefix) { + return buildOptions -> { + ImmutableList.Builder<BuildOptions> result = ImmutableList.builder(); + for (int index = 1; index <= 2; index++) { + BuildOptions toOptions = buildOptions.clone(); + TestConfiguration.TestOptions baseOptions = + toOptions.get(TestConfiguration.TestOptions.class); + baseOptions.testFilter = + (baseOptions.testFilter == null ? "" : baseOptions.testFilter) + prefix + index; + result.add(toOptions); } + return result.build(); }; }