Convert uses of RuleTransitionFactory to TransitionFactory.
Part of #7814.
Closes #7922.
PiperOrigin-RevId: 241744479
diff --git a/src/main/java/com/google/devtools/build/lib/packages/RuleClass.java b/src/main/java/com/google/devtools/build/lib/packages/RuleClass.java
index b46bce6..328a840 100644
--- a/src/main/java/com/google/devtools/build/lib/packages/RuleClass.java
+++ b/src/main/java/com/google/devtools/build/lib/packages/RuleClass.java
@@ -35,6 +35,7 @@
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.analysis.config.transitions.SplitTransition;
+import com.google.devtools.build.lib.analysis.config.transitions.TransitionFactory;
import com.google.devtools.build.lib.cmdline.Label;
import com.google.devtools.build.lib.cmdline.LabelSyntaxException;
import com.google.devtools.build.lib.cmdline.PackageIdentifier;
@@ -624,23 +625,6 @@
}
}
- /** A RuleTransitionFactory which always returns the same transition. */
- @AutoCodec.VisibleForSerialization
- @AutoCodec
- static final class FixedTransitionFactory implements RuleTransitionFactory {
- private final PatchTransition transition;
-
- @AutoCodec.VisibleForSerialization
- FixedTransitionFactory(PatchTransition transition) {
- this.transition = transition;
- }
-
- @Override
- public PatchTransition buildTransitionFor(Rule rule) {
- return transition;
- }
- }
-
/**
* Name of default attribute implicitly added to all Skylark RuleClasses that are {@code
* build_setting}s.
@@ -679,7 +663,7 @@
private boolean hasStarlarkRuleTransition = false;
private boolean ignorePackageLicenses = false;
private ImplicitOutputsFunction implicitOutputsFunction = ImplicitOutputsFunction.NONE;
- private RuleTransitionFactory transitionFactory;
+ private TransitionFactory<Rule> transitionFactory;
private ConfiguredTargetFactory<?, ?, ?> configuredTargetFactory = null;
private PredicateWithMessage<Rule> validityPredicate =
PredicatesWithMessage.<Rule>alwaysTrue();
@@ -1049,15 +1033,14 @@
* Applies the given transition to all incoming edges for this rule class.
*
* <p>This cannot be a {@link SplitTransition} because that requires coordination with the
- * rule's parent: use {@link
- * Attribute.Builder#cfg(com.google.devtools.build.lib.analysis.config.transitions.TransitionFactory)}
- * on the parent to declare splits.
+ * rule's parent: use {@link Attribute.Builder#cfg(TransitionFactory)} on the parent to declare
+ * splits.
*
* <p>If you need the transition to depend on the rule it's being applied to, use {@link
- * #cfg(RuleTransitionFactory)}.
+ * #cfg(TransitionFactory)}.
*/
public Builder cfg(PatchTransition transition) {
- return cfg(new FixedTransitionFactory(transition));
+ return cfg((TransitionFactory<Rule>) (unused) -> (transition));
}
/**
@@ -1066,12 +1049,13 @@
* <p>Unlike {@link #cfg(PatchTransition)}, the factory can examine the rule when deciding what
* transition to use.
*/
- public Builder cfg(RuleTransitionFactory transitionFactory) {
+ public Builder cfg(TransitionFactory<Rule> transitionFactory) {
Preconditions.checkState(type != RuleClassType.ABSTRACT,
"Setting not inherited property (cfg) of abstract rule class '%s'", name);
Preconditions.checkState(this.transitionFactory == null,
"Property cfg has already been set");
Preconditions.checkNotNull(transitionFactory);
+ Preconditions.checkArgument(!transitionFactory.isSplit());
this.transitionFactory = transitionFactory;
return this;
}
@@ -1491,7 +1475,7 @@
* A factory which will produce a configuration transition that should be applied on any edge of
* the configured target graph that leads into a target of this rule class.
*/
- private final RuleTransitionFactory transitionFactory;
+ private final TransitionFactory<Rule> transitionFactory;
/** The factory that creates configured targets from this rule. */
private final ConfiguredTargetFactory<?, ?, ?> configuredTargetFactory;
@@ -1597,7 +1581,7 @@
boolean hasFunctionTransitionWhitelist,
boolean ignorePackageLicenses,
ImplicitOutputsFunction implicitOutputsFunction,
- RuleTransitionFactory transitionFactory,
+ TransitionFactory<Rule> transitionFactory,
ConfiguredTargetFactory<?, ?, ?> configuredTargetFactory,
PredicateWithMessage<Rule> validityPredicate,
Predicate<String> preferredDependencyPredicate,
@@ -1704,7 +1688,7 @@
return implicitOutputsFunction;
}
- public RuleTransitionFactory getTransitionFactory() {
+ public TransitionFactory<Rule> getTransitionFactory() {
return transitionFactory;
}