Remove final accessors of ConfigurationTransition.HOST.
Also lean interfaces from Attribute.ConfigurationTransition
to Attribute.Transition.
PiperOrigin-RevId: 179846158
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 b5d0834..4462ae4 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
@@ -389,21 +389,21 @@
* Returns a configuration fragment for this this target.
*/
@Nullable
- public <T extends Fragment> T getFragment(Class<T> fragment, ConfigurationTransition config) {
- return getFragment(fragment, fragment.getSimpleName(), "", config);
+ public <T extends Fragment> T getFragment(Class<T> fragment, Attribute.Transition transition) {
+ return getFragment(fragment, fragment.getSimpleName(), "", transition);
}
@Nullable
protected <T extends Fragment> T getFragment(Class<T> fragment, String name,
- String additionalErrorMessage, ConfigurationTransition config) {
+ String additionalErrorMessage, Attribute.Transition transition) {
// TODO(bazel-team): The fragments can also be accessed directly through BuildConfiguration.
// Can we lock that down somehow?
- Preconditions.checkArgument(isLegalFragment(fragment, config),
+ Preconditions.checkArgument(isLegalFragment(fragment, transition),
"%s has to declare '%s' as a required fragment "
+ "in %s configuration in order to access it.%s",
- getRuleClassNameForLogging(), name, FragmentCollection.getConfigurationName(config),
+ getRuleClassNameForLogging(), name, FragmentCollection.getConfigurationName(transition),
additionalErrorMessage);
- return getConfiguration(config).getFragment(fragment);
+ return getConfiguration(transition).getFragment(fragment);
}
@Nullable
@@ -413,9 +413,9 @@
}
@Nullable
- public Fragment getSkylarkFragment(String name, ConfigurationTransition config) {
+ public Fragment getSkylarkFragment(String name, Attribute.Transition transition) {
Class<? extends Fragment> fragmentClass =
- getConfiguration(config).getSkylarkFragmentByName(name);
+ getConfiguration(transition).getSkylarkFragmentByName(name);
if (fragmentClass == null) {
return null;
}
@@ -423,19 +423,19 @@
String.format(
" Please update the '%1$sfragments' argument of the rule definition "
+ "(for example: %1$sfragments = [\"%2$s\"])",
- (config == ConfigurationTransition.HOST) ? "host_" : "", name),
- config);
+ (transition.isHostTransition()) ? "host_" : "", name),
+ transition);
}
- public ImmutableCollection<String> getSkylarkFragmentNames(ConfigurationTransition config) {
- return getConfiguration(config).getSkylarkFragmentNames();
+ public ImmutableCollection<String> getSkylarkFragmentNames(Attribute.Transition transition) {
+ return getConfiguration(transition).getSkylarkFragmentNames();
}
public <T extends Fragment> boolean isLegalFragment(
- Class<T> fragment, ConfigurationTransition config) {
+ Class<T> fragment, Attribute.Transition transition) {
return fragment == universalFragment
|| fragment == PlatformConfiguration.class
- || configurationFragmentPolicy.isLegalConfigurationFragment(fragment, config);
+ || configurationFragmentPolicy.isLegalConfigurationFragment(fragment, transition);
}
public <T extends Fragment> boolean isLegalFragment(Class<T> fragment) {
@@ -443,8 +443,8 @@
return isLegalFragment(fragment, ConfigurationTransition.NONE);
}
- protected BuildConfiguration getConfiguration(ConfigurationTransition config) {
- return config.equals(ConfigurationTransition.HOST) ? hostConfiguration : getConfiguration();
+ protected BuildConfiguration getConfiguration(Attribute.Transition transition) {
+ return transition.isHostTransition() ? hostConfiguration : getConfiguration();
}
@Override
@@ -1058,7 +1058,7 @@
}
Attribute.Transition transition = attributeDefinition.getConfigurationTransition();
if (mode == Mode.HOST) {
- if (!(transition instanceof PatchTransition) && transition != ConfigurationTransition.HOST) {
+ if (!(transition instanceof PatchTransition)) {
throw new IllegalStateException(getRule().getLocation() + ": "
+ getRuleClassNameForLogging() + " attribute " + attributeName
+ " is not configured for the host configuration");
@@ -1098,7 +1098,7 @@
throw new IllegalStateException(getRuleClassNameForLogging() + " attribute " + attributeName
+ " is not a label type attribute");
}
- if (attributeDefinition.getConfigurationTransition() == ConfigurationTransition.HOST) {
+ if (attributeDefinition.getConfigurationTransition().isHostTransition()) {
return Mode.HOST;
} else if (attributeDefinition.getConfigurationTransition() == ConfigurationTransition.NONE) {
return Mode.TARGET;
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/config/FragmentCollection.java b/src/main/java/com/google/devtools/build/lib/analysis/config/FragmentCollection.java
index 0853001..cdadf22 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/config/FragmentCollection.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/config/FragmentCollection.java
@@ -17,7 +17,7 @@
import com.google.common.collect.ImmutableCollection;
import com.google.devtools.build.lib.analysis.RuleContext;
import com.google.devtools.build.lib.concurrent.ThreadSafety.Immutable;
-import com.google.devtools.build.lib.packages.Attribute.ConfigurationTransition;
+import com.google.devtools.build.lib.packages.Attribute;
import com.google.devtools.build.lib.skylarkinterface.SkylarkModule;
import com.google.devtools.build.lib.skylarkinterface.SkylarkModuleCategory;
import com.google.devtools.build.lib.syntax.ClassObject;
@@ -40,22 +40,22 @@
+ "(see <a href=\"../rules.md#fragments\">here</a>).")
public class FragmentCollection implements ClassObject {
private final RuleContext ruleContext;
- private final ConfigurationTransition config;
+ private final Attribute.Transition transition;
- public FragmentCollection(RuleContext ruleContext, ConfigurationTransition config) {
+ public FragmentCollection(RuleContext ruleContext, Attribute.Transition transition) {
this.ruleContext = ruleContext;
- this.config = config;
+ this.transition = transition;
}
@Override
@Nullable
public Object getValue(String name) {
- return ruleContext.getSkylarkFragment(name, config);
+ return ruleContext.getSkylarkFragment(name, transition);
}
@Override
public ImmutableCollection<String> getKeys() {
- return ruleContext.getSkylarkFragmentNames(config);
+ return ruleContext.getSkylarkFragmentNames(transition);
}
@Override
@@ -64,19 +64,19 @@
return String.format(
"There is no configuration fragment named '%s' in %s configuration. "
+ "Available fragments: %s",
- name, getConfigurationName(config), printKeys());
+ name, getConfigurationName(transition), printKeys());
}
private String printKeys() {
return String.format("'%s'", Joiner.on("', '").join(getKeys()));
}
- public static String getConfigurationName(ConfigurationTransition config) {
- return (config == ConfigurationTransition.HOST) ? "host" : "target";
+ public static String getConfigurationName(Attribute.Transition config) {
+ return config.isHostTransition() ? "host" : "target";
}
@Override
public String toString() {
- return getConfigurationName(config) + ": [ " + printKeys() + "]";
+ return getConfigurationName(transition) + ": [ " + printKeys() + "]";
}
}
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/skylark/SkylarkRuleContext.java b/src/main/java/com/google/devtools/build/lib/analysis/skylark/SkylarkRuleContext.java
index 7910b80..1bcc46c 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/skylark/SkylarkRuleContext.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/skylark/SkylarkRuleContext.java
@@ -36,6 +36,7 @@
import com.google.devtools.build.lib.analysis.TransitiveInfoCollection;
import com.google.devtools.build.lib.analysis.config.BuildConfiguration;
import com.google.devtools.build.lib.analysis.config.FragmentCollection;
+import com.google.devtools.build.lib.analysis.config.HostTransition;
import com.google.devtools.build.lib.analysis.configuredtargets.RuleConfiguredTarget.Mode;
import com.google.devtools.build.lib.analysis.stringtemplate.ExpansionException;
import com.google.devtools.build.lib.analysis.test.InstrumentedFilesCollector;
@@ -225,7 +226,7 @@
this.ruleContext = Preconditions.checkNotNull(ruleContext);
this.ruleLabelCanonicalName = ruleContext.getLabel().getCanonicalForm();
this.fragments = new FragmentCollection(ruleContext, ConfigurationTransition.NONE);
- this.hostFragments = new FragmentCollection(ruleContext, ConfigurationTransition.HOST);
+ this.hostFragments = new FragmentCollection(ruleContext, HostTransition.INSTANCE);
this.aspectDescriptor = aspectDescriptor;
this.skylarkSemantics = skylarkSemantics;