Add an (unused) AttributeMap argument to Attribute.getConfigurationTransition.
This is to prepare Attribute to use TransitionFactory instead of a single
ConfigurationTransition.
Part of #7814.
PiperOrigin-RevId: 240195652
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 f44b607..6120737 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
@@ -342,10 +342,12 @@
collectPropagatingAspects(
aspects, attribute.getName(), entry.getKey().getOwningAspect(), propagatingAspects);
+ // TODO(https://github.com/bazelbuild/bazel/issues/7814): Unify this and get rid of the
+ // check for splits, to directly use TransitionFactory.
ConfigurationTransition attributeTransition =
attribute.hasSplitConfigurationTransition()
? attribute.getSplitTransition(attributeMap)
- : attribute.getConfigurationTransition();
+ : attribute.getConfigurationTransition(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 e34f134..c60143b 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
@@ -1154,7 +1154,9 @@
throw new IllegalStateException(getRuleClassNameForLogging() + " attribute " + attributeName
+ " is not a label type attribute");
}
- ConfigurationTransition transition = attributeDefinition.getConfigurationTransition();
+ // TODO(https://github.com/bazelbuild/bazel/issues/7814): Refactor this to be more clear and
+ // not require a specific ConfigurationTransition.
+ ConfigurationTransition transition = attributeDefinition.getConfigurationTransition(null);
if (mode == Mode.HOST) {
if (!(transition instanceof PatchTransition)) {
throw new IllegalStateException(getRule().getLocation() + ": "
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 14ad552..92ce809 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
@@ -2171,10 +2171,10 @@
}
/**
- * Returns the configuration transition for this attribute for label or label
- * list attributes. For other attributes it will always return {@code NONE}.
+ * Returns the configuration transition for this attribute for label or label list attributes. For
+ * other attributes it will always return {@code NONE}.
*/
- public ConfigurationTransition getConfigurationTransition() {
+ public ConfigurationTransition getConfigurationTransition(AttributeMap usused) {
return configTransition;
}
diff --git a/src/test/java/com/google/devtools/build/lib/skylark/SkylarkRuleClassFunctionsTest.java b/src/test/java/com/google/devtools/build/lib/skylark/SkylarkRuleClassFunctionsTest.java
index dd16c74..f14a303 100644
--- a/src/test/java/com/google/devtools/build/lib/skylark/SkylarkRuleClassFunctionsTest.java
+++ b/src/test/java/com/google/devtools/build/lib/skylark/SkylarkRuleClassFunctionsTest.java
@@ -58,6 +58,7 @@
import com.google.devtools.build.lib.syntax.SkylarkNestedSet;
import com.google.devtools.build.lib.syntax.StarlarkSemantics;
import com.google.devtools.build.lib.syntax.Type;
+import com.google.devtools.build.lib.testutil.FakeAttributeMapper;
import com.google.devtools.build.lib.testutil.MoreAsserts;
import com.google.devtools.build.lib.util.FileTypeSet;
import java.util.Collection;
@@ -587,7 +588,8 @@
@Test
public void testAttrCfgTarget() throws Exception {
Attribute attr = buildAttribute("a1", "attr.label(cfg = 'target', allow_files = True)");
- assertThat(attr.getConfigurationTransition()).isEqualTo(NoTransition.INSTANCE);
+ assertThat(attr.getConfigurationTransition(FakeAttributeMapper.empty()))
+ .isEqualTo(NoTransition.INSTANCE);
}
@Test