aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main
diff options
context:
space:
mode:
authorGravatar gregce <gregce@google.com>2017-12-21 12:40:20 -0800
committerGravatar Copybara-Service <copybara-piper@google.com>2017-12-21 12:42:14 -0800
commitc7b2121757343bd117ecdc2513c945e2e3da6406 (patch)
treeedd77a1271f23432bd080d02c11117c88a9b7fdf /src/main
parent46356dfa59428b665aa280ba4cbca6e449f73c5b (diff)
Remove final accessors of ConfigurationTransition.HOST.
Also lean interfaces from Attribute.ConfigurationTransition to Attribute.Transition. PiperOrigin-RevId: 179846158
Diffstat (limited to 'src/main')
-rw-r--r--src/main/java/com/google/devtools/build/lib/analysis/RuleContext.java36
-rw-r--r--src/main/java/com/google/devtools/build/lib/analysis/config/FragmentCollection.java20
-rw-r--r--src/main/java/com/google/devtools/build/lib/analysis/skylark/SkylarkRuleContext.java3
3 files changed, 30 insertions, 29 deletions
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 b5d083486a..4462ae4bee 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 @@ public final class RuleContext extends TargetContext
* 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 @@ public final class RuleContext extends TargetContext
}
@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 @@ public final class RuleContext extends TargetContext
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 @@ public final class RuleContext extends TargetContext
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 @@ public final class RuleContext extends TargetContext
}
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 @@ public final class RuleContext extends TargetContext
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 0853001052..cdadf22a85 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.base.Joiner;
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 @@ import javax.annotation.Nullable;
+ "(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 @@ public class FragmentCollection implements ClassObject {
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 7910b80410..1bcc46c5ed 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.RuleContext;
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 @@ public final class SkylarkRuleContext implements SkylarkValue {
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;