Rename RuleTransitionData to AttributeTransitionData.
Rule transitions will use a different data holder.
part of work on #7814.
Closes #7918.
PiperOrigin-RevId: 241541559
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 9fa240c..536cb10 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
@@ -37,6 +37,7 @@
import com.google.devtools.build.lib.packages.Attribute;
import com.google.devtools.build.lib.packages.Attribute.LateBoundDefault;
import com.google.devtools.build.lib.packages.AttributeMap;
+import com.google.devtools.build.lib.packages.AttributeTransitionData;
import com.google.devtools.build.lib.packages.BuildType;
import com.google.devtools.build.lib.packages.ConfiguredAttributeMapper;
import com.google.devtools.build.lib.packages.EnvironmentGroup;
@@ -45,7 +46,6 @@
import com.google.devtools.build.lib.packages.PackageGroup;
import com.google.devtools.build.lib.packages.Rule;
import com.google.devtools.build.lib.packages.RuleClass;
-import com.google.devtools.build.lib.packages.RuleTransitionData;
import com.google.devtools.build.lib.packages.RuleTransitionFactory;
import com.google.devtools.build.lib.packages.Target;
import com.google.devtools.build.lib.syntax.EvalException;
@@ -344,7 +344,7 @@
aspects, attribute.getName(), entry.getKey().getOwningAspect(), propagatingAspects);
ConfigurationTransition attributeTransition =
- attribute.getTransitionFactory().create(RuleTransitionData.create(attributeMap));
+ attribute.getTransitionFactory().create(AttributeTransitionData.create(attributeMap));
partiallyResolvedDeps.put(
entry.getKey(),
PartiallyResolvedDependency.of(toLabel, attributeTransition, propagatingAspects.build()));
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 37f682a..a669df3 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
@@ -71,6 +71,7 @@
import com.google.devtools.build.lib.packages.AspectDescriptor;
import com.google.devtools.build.lib.packages.Attribute;
import com.google.devtools.build.lib.packages.AttributeMap;
+import com.google.devtools.build.lib.packages.AttributeTransitionData;
import com.google.devtools.build.lib.packages.BuildType;
import com.google.devtools.build.lib.packages.BuiltinProvider;
import com.google.devtools.build.lib.packages.ConfigurationFragmentPolicy;
@@ -89,7 +90,6 @@
import com.google.devtools.build.lib.packages.Rule;
import com.google.devtools.build.lib.packages.RuleClass;
import com.google.devtools.build.lib.packages.RuleErrorConsumer;
-import com.google.devtools.build.lib.packages.RuleTransitionData;
import com.google.devtools.build.lib.packages.Target;
import com.google.devtools.build.lib.packages.TargetUtils;
import com.google.devtools.build.lib.skyframe.ConfiguredTargetAndData;
@@ -843,7 +843,7 @@
attributeDefinition
.getTransitionFactory()
.create(
- RuleTransitionData.create(
+ AttributeTransitionData.create(
ConfiguredAttributeMapper.of(rule, configConditions)));
BuildOptions fromOptions = getConfiguration().getOptions();
List<BuildOptions> splitOptions = transition.split(fromOptions);
@@ -1173,7 +1173,7 @@
throw new IllegalStateException(getRuleClassNameForLogging() + " attribute " + attributeName
+ " is not a label type attribute");
}
- TransitionFactory<RuleTransitionData> transitionFactory =
+ TransitionFactory<AttributeTransitionData> transitionFactory =
attributeDefinition.getTransitionFactory();
if (mode == Mode.HOST) {
if (transitionFactory.isSplit()) {
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/skylark/StarlarkAttributeTransitionProvider.java b/src/main/java/com/google/devtools/build/lib/analysis/skylark/StarlarkAttributeTransitionProvider.java
index d9dc590..eb3d662 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/skylark/StarlarkAttributeTransitionProvider.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/skylark/StarlarkAttributeTransitionProvider.java
@@ -27,8 +27,8 @@
import com.google.devtools.build.lib.events.Event;
import com.google.devtools.build.lib.packages.Attribute;
import com.google.devtools.build.lib.packages.AttributeMap;
+import com.google.devtools.build.lib.packages.AttributeTransitionData;
import com.google.devtools.build.lib.packages.ConfiguredAttributeMapper;
-import com.google.devtools.build.lib.packages.RuleTransitionData;
import com.google.devtools.build.lib.packages.StructImpl;
import com.google.devtools.build.lib.packages.StructProvider;
import com.google.devtools.build.lib.skylarkbuildapi.SplitTransitionProviderApi;
@@ -52,7 +52,7 @@
* instead of just labels (see {@link SkylarkAttributesCollection#addAttribute}).
*/
public class StarlarkAttributeTransitionProvider
- implements TransitionFactory<RuleTransitionData>, SplitTransitionProviderApi {
+ implements TransitionFactory<AttributeTransitionData>, SplitTransitionProviderApi {
private final StarlarkDefinedConfigTransition starlarkDefinedConfigTransition;
StarlarkAttributeTransitionProvider(
@@ -66,7 +66,7 @@
}
@Override
- public SplitTransition create(RuleTransitionData data) {
+ public SplitTransition create(AttributeTransitionData data) {
AttributeMap attributeMap = data.attributes();
Preconditions.checkArgument(attributeMap instanceof ConfiguredAttributeMapper);
return new FunctionSplitTransition(
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 47a27c1..a1c80d8 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
@@ -86,11 +86,12 @@
// TODO(https://github.com/bazelbuild/bazel/issues/7814): Remove this, have callers create
// factories.
@AutoValue
- abstract static class StaticTransitionFactory implements TransitionFactory<RuleTransitionData> {
+ abstract static class StaticTransitionFactory
+ implements TransitionFactory<AttributeTransitionData> {
abstract ConfigurationTransition transition();
@Override
- public ConfigurationTransition create(RuleTransitionData unused) {
+ public ConfigurationTransition create(AttributeTransitionData unused) {
return transition();
}
@@ -104,7 +105,7 @@
return transition() instanceof SplitTransition;
}
- static TransitionFactory<RuleTransitionData> of(ConfigurationTransition transition) {
+ static TransitionFactory<AttributeTransitionData> of(ConfigurationTransition transition) {
return new AutoValue_Attribute_StaticTransitionFactory(transition);
}
}
@@ -379,7 +380,7 @@
public static class ImmutableAttributeFactory {
private final Type<?> type;
private final String doc;
- private final TransitionFactory<RuleTransitionData> transitionFactory;
+ private final TransitionFactory<AttributeTransitionData> transitionFactory;
private final RuleClassNamePredicate allowedRuleClassesForLabels;
private final RuleClassNamePredicate allowedRuleClassesForLabelsWarning;
private final FileTypeSet allowedFileTypesForLabels;
@@ -399,7 +400,7 @@
String doc,
ImmutableSet<PropertyFlag> propertyFlags,
Object value,
- TransitionFactory<RuleTransitionData> transitionFactory,
+ TransitionFactory<AttributeTransitionData> transitionFactory,
RuleClassNamePredicate allowedRuleClassesForLabels,
RuleClassNamePredicate allowedRuleClassesForLabelsWarning,
FileTypeSet allowedFileTypesForLabels,
@@ -486,7 +487,8 @@
public static class Builder <TYPE> {
private final String name;
private final Type<TYPE> type;
- private TransitionFactory<RuleTransitionData> transitionFactory = NoTransition.createFactory();
+ private TransitionFactory<AttributeTransitionData> transitionFactory =
+ NoTransition.createFactory();
private RuleClassNamePredicate allowedRuleClassesForLabels = ANY_RULE;
private RuleClassNamePredicate allowedRuleClassesForLabelsWarning = NO_RULE;
private FileTypeSet allowedFileTypesForLabels;
@@ -622,7 +624,7 @@
}
/** Defines the configuration transition for this attribute. */
- public Builder<TYPE> cfg(TransitionFactory<RuleTransitionData> transitionFactory) {
+ public Builder<TYPE> cfg(TransitionFactory<AttributeTransitionData> transitionFactory) {
Preconditions.checkNotNull(transitionFactory);
Preconditions.checkState(
NoTransition.isInstance(this.transitionFactory),
@@ -1924,7 +1926,7 @@
// (We assume a hypothetical Type.isValid(Object) predicate.)
private final Object defaultValue;
- private final TransitionFactory<RuleTransitionData> transitionFactory;
+ private final TransitionFactory<AttributeTransitionData> transitionFactory;
/**
* For label or label-list attributes, this predicate returns which rule
@@ -1981,7 +1983,7 @@
Type<?> type,
Set<PropertyFlag> propertyFlags,
Object defaultValue,
- TransitionFactory<RuleTransitionData> transitionFactory,
+ TransitionFactory<AttributeTransitionData> transitionFactory,
RuleClassNamePredicate allowedRuleClassesForLabels,
RuleClassNamePredicate allowedRuleClassesForLabelsWarning,
FileTypeSet allowedFileTypesForLabels,
@@ -2143,7 +2145,7 @@
* Returns the configuration transition factory for this attribute for label or label list
* attributes. For other attributes it will always return {@code NONE}.
*/
- public TransitionFactory<RuleTransitionData> getTransitionFactory() {
+ public TransitionFactory<AttributeTransitionData> getTransitionFactory() {
return transitionFactory;
}
diff --git a/src/main/java/com/google/devtools/build/lib/packages/RuleTransitionData.java b/src/main/java/com/google/devtools/build/lib/packages/AttributeTransitionData.java
similarity index 84%
rename from src/main/java/com/google/devtools/build/lib/packages/RuleTransitionData.java
rename to src/main/java/com/google/devtools/build/lib/packages/AttributeTransitionData.java
index 552fb1c..a43c760 100644
--- a/src/main/java/com/google/devtools/build/lib/packages/RuleTransitionData.java
+++ b/src/main/java/com/google/devtools/build/lib/packages/AttributeTransitionData.java
@@ -23,15 +23,15 @@
// This class is in lib.packages in order to access AttributeMap, which is not available to
// the lib.analysis.config.transitions package.
@AutoValue
-public abstract class RuleTransitionData {
+public abstract class AttributeTransitionData {
/** Returns the {@link AttributeMap} which can be used to create a transition. */
public abstract AttributeMap attributes();
// TODO(https://github.com/bazelbuild/bazel/issues/7814): Add further data fields as needed by
// transition factory instances.
- /** Returns a new {@link RuleTransitionData} instance. */
- public static RuleTransitionData create(AttributeMap attributes) {
- return new AutoValue_RuleTransitionData(attributes);
+ /** Returns a new {@link AttributeTransitionData} instance. */
+ public static AttributeTransitionData create(AttributeMap attributes) {
+ return new AutoValue_AttributeTransitionData(attributes);
}
}
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 65f83db..71e9234 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
@@ -26,8 +26,8 @@
import com.google.devtools.build.lib.analysis.config.BuildOptions;
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.packages.AttributeTransitionData;
import com.google.devtools.build.lib.packages.RuleClass.ConfiguredTargetFactory.RuleErrorException;
-import com.google.devtools.build.lib.packages.RuleTransitionData;
import com.google.devtools.build.lib.rules.apple.AppleCommandLineOptions;
import com.google.devtools.build.lib.rules.apple.AppleConfiguration;
import com.google.devtools.build.lib.rules.apple.AppleConfiguration.ConfigurationDistinguisher;
@@ -48,7 +48,9 @@
*/
// TODO(https://github.com/bazelbuild/bazel/pull/7825): Rename to MultiArchSplitTransitionFactory.
public class MultiArchSplitTransitionProvider
- implements TransitionFactory<RuleTransitionData>, SplitTransitionProviderApi, SkylarkValue {
+ implements TransitionFactory<AttributeTransitionData>,
+ SplitTransitionProviderApi,
+ SkylarkValue {
@VisibleForTesting
static final String UNSUPPORTED_PLATFORM_TYPE_ERROR_FORMAT =
@@ -129,7 +131,7 @@
}
@Override
- public SplitTransition create(RuleTransitionData data) {
+ public SplitTransition create(AttributeTransitionData data) {
String platformTypeString = data.attributes().get(PlatformRule.PLATFORM_TYPE_ATTR_NAME, STRING);
String minimumOsVersionString = data.attributes().get(PlatformRule.MINIMUM_OS_VERSION, STRING);
PlatformType platformType;
diff --git a/src/test/java/com/google/devtools/build/lib/analysis/CircularDependencyTest.java b/src/test/java/com/google/devtools/build/lib/analysis/CircularDependencyTest.java
index 41d6ce0..1e179b2 100644
--- a/src/test/java/com/google/devtools/build/lib/analysis/CircularDependencyTest.java
+++ b/src/test/java/com/google/devtools/build/lib/analysis/CircularDependencyTest.java
@@ -32,9 +32,9 @@
import com.google.devtools.build.lib.events.Event;
import com.google.devtools.build.lib.events.Location;
import com.google.devtools.build.lib.packages.Attribute.LabelLateBoundDefault;
+import com.google.devtools.build.lib.packages.AttributeTransitionData;
import com.google.devtools.build.lib.packages.NoSuchTargetException;
import com.google.devtools.build.lib.packages.Package;
-import com.google.devtools.build.lib.packages.RuleTransitionData;
import com.google.devtools.build.lib.testutil.TestRuleClassProvider;
import org.junit.Test;
import org.junit.runner.RunWith;
@@ -269,9 +269,9 @@
.mandatory()
.allowedFileTypes()
.cfg(
- new TransitionFactory<RuleTransitionData>() {
+ new TransitionFactory<AttributeTransitionData>() {
@Override
- public SplitTransition create(RuleTransitionData data) {
+ public SplitTransition create(AttributeTransitionData data) {
return (BuildOptions options) -> {
String define = data.attributes().get("define", STRING);
BuildOptions newOptions = options.clone();
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 b0320d2..82d6b85 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
@@ -283,7 +283,8 @@
Attribute attr = attr("foo", LABEL).cfg(splitTransition).allowedFileTypes().build();
assertThat(attr.hasSplitConfigurationTransition()).isTrue();
ConfigurationTransition transition =
- attr.getTransitionFactory().create(RuleTransitionData.create(FakeAttributeMapper.empty()));
+ attr.getTransitionFactory()
+ .create(AttributeTransitionData.create(FakeAttributeMapper.empty()));
assertThat(transition).isEqualTo(splitTransition);
}
@@ -294,7 +295,8 @@
attr("foo", LABEL).cfg(splitTransitionProvider).allowedFileTypes().build();
assertThat(attr.hasSplitConfigurationTransition()).isTrue();
ConfigurationTransition transition =
- attr.getTransitionFactory().create(RuleTransitionData.create(FakeAttributeMapper.empty()));
+ attr.getTransitionFactory()
+ .create(AttributeTransitionData.create(FakeAttributeMapper.empty()));
assertThat(transition).isInstanceOf(TestSplitTransition.class);
}
@@ -314,9 +316,9 @@
}
private static class TestSplitTransitionProvider
- implements TransitionFactory<RuleTransitionData> {
+ implements TransitionFactory<AttributeTransitionData> {
@Override
- public SplitTransition create(RuleTransitionData data) {
+ public SplitTransition create(AttributeTransitionData data) {
return new TestSplitTransition();
}