Remove outdated Attribute.Configurator interface.
With dynamic configurations we no longer need a special
class to apply transitions: a simple patch transition
bound to an attribute works just as well.
PiperOrigin-RevId: 168442602
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 3f28614..162b9de 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.BuildOptions;
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.fileset.FilesetProvider;
import com.google.devtools.build.lib.cmdline.Label;
import com.google.devtools.build.lib.collect.ImmutableSortedKeyListMultimap;
@@ -1232,20 +1233,21 @@
throw new IllegalStateException(getRuleClassNameForLogging() + " attribute " + attributeName
+ " is not a label type attribute");
}
+ Attribute.Transition transition = attributeDefinition.getConfigurationTransition();
if (mode == Mode.HOST) {
- if (attributeDefinition.getConfigurationTransition() != ConfigurationTransition.HOST) {
+ if (!(transition instanceof PatchTransition) && transition != ConfigurationTransition.HOST) {
throw new IllegalStateException(getRule().getLocation() + ": "
+ getRuleClassNameForLogging() + " attribute " + attributeName
+ " is not configured for the host configuration");
}
} else if (mode == Mode.TARGET) {
- if (attributeDefinition.getConfigurationTransition() != ConfigurationTransition.NONE) {
+ if (!(transition instanceof PatchTransition) && transition != ConfigurationTransition.NONE) {
throw new IllegalStateException(getRule().getLocation() + ": "
+ getRuleClassNameForLogging() + " attribute " + attributeName
+ " is not configured for the target configuration");
}
} else if (mode == Mode.DATA) {
- if (attributeDefinition.getConfigurationTransition() != ConfigurationTransition.DATA) {
+ if (!(transition instanceof PatchTransition) && transition != ConfigurationTransition.DATA) {
throw new IllegalStateException(getRule().getLocation() + ": "
+ getRuleClassNameForLogging() + " attribute " + attributeName
+ " is not configured for the data configuration");