aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build/lib/analysis/RuleContext.java
diff options
context:
space:
mode:
authorGravatar Michael Staib <mstaib@google.com>2015-09-29 23:31:51 +0000
committerGravatar Florian Weikert <fwe@google.com>2015-09-30 09:36:25 +0000
commitb51251ed0df121b50fba315d4eee17fa40049e83 (patch)
treed36907ff0df148711168c8cfaa8cc2eb43201f61 /src/main/java/com/google/devtools/build/lib/analysis/RuleContext.java
parent5fb1073d31e392e2f39a067647337043500b348e (diff)
Extract configuration fragment access logic into ConfigurationFragmentPolicy.
This is the first step toward giving aspects the ability to define their own required configuration fragments, extracting the required configuration metadata into a common place. This should be a no-op refactoring. -- MOS_MIGRATED_REVID=104249500
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/analysis/RuleContext.java')
-rw-r--r--src/main/java/com/google/devtools/build/lib/analysis/RuleContext.java13
1 files changed, 11 insertions, 2 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 19dbcc354b..9d21ec6fff 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
@@ -51,6 +51,7 @@ import com.google.devtools.build.lib.packages.Attribute.ConfigurationTransition;
import com.google.devtools.build.lib.packages.Attribute.SplitTransition;
import com.google.devtools.build.lib.packages.AttributeMap;
import com.google.devtools.build.lib.packages.BuildType;
+import com.google.devtools.build.lib.packages.ConfigurationFragmentPolicy;
import com.google.devtools.build.lib.packages.FileTarget;
import com.google.devtools.build.lib.packages.FilesetEntry;
import com.google.devtools.build.lib.packages.ImplicitOutputsFunction;
@@ -137,6 +138,7 @@ public final class RuleContext extends TargetContext
private final ImmutableSet<String> features;
private final Map<String, Attribute> attributeMap;
private final BuildConfiguration hostConfiguration;
+ private final ConfigurationFragmentPolicy configurationFragmentPolicy;
private final ErrorReporter reporter;
private ActionOwner actionOwner;
@@ -150,6 +152,7 @@ public final class RuleContext extends TargetContext
super(builder.env, builder.rule, builder.configuration, builder.prerequisiteMap.get(null),
builder.visibility);
this.rule = builder.rule;
+ this.configurationFragmentPolicy = builder.configurationFragmentPolicy;
this.targetMap = targetMap;
this.filesetEntryMap = filesetEntryMap;
this.configConditions = configConditions;
@@ -167,7 +170,7 @@ public final class RuleContext extends TargetContext
parseFeatures(getConfiguration().getDefaultFeatures(), globallyEnabled, globallyDisabled);
for (ImmutableMap.Entry<Class<? extends Fragment>, Fragment> entry :
getConfiguration().getAllFragments().entrySet()) {
- if (rule.getRuleClassObject().isLegalConfigurationFragment(entry.getKey())) {
+ if (configurationFragmentPolicy.isLegalConfigurationFragment(entry.getKey())) {
globallyEnabled.addAll(entry.getValue().configurationEnabledFeatures(this));
}
}
@@ -308,9 +311,13 @@ public final class RuleContext extends TargetContext
return getConfiguration(config).getSkylarkFragmentNames();
}
+ public ConfigurationFragmentPolicy getConfigurationFragment() {
+ return configurationFragmentPolicy;
+ }
+
public <T extends Fragment> boolean isLegalFragment(
Class<T> fragment, ConfigurationTransition config) {
- return rule.getRuleClassObject().isLegalConfigurationFragment(fragment, config);
+ return configurationFragmentPolicy.isLegalConfigurationFragment(fragment, config);
}
public <T extends Fragment> boolean isLegalFragment(Class<T> fragment) {
@@ -1223,6 +1230,7 @@ public final class RuleContext extends TargetContext
public static final class Builder implements RuleErrorConsumer {
private final AnalysisEnvironment env;
private final Rule rule;
+ private final ConfigurationFragmentPolicy configurationFragmentPolicy;
private final BuildConfiguration configuration;
private final BuildConfiguration hostConfiguration;
private final PrerequisiteValidator prerequisiteValidator;
@@ -1236,6 +1244,7 @@ public final class RuleContext extends TargetContext
PrerequisiteValidator prerequisiteValidator) {
this.env = Preconditions.checkNotNull(env);
this.rule = Preconditions.checkNotNull(rule);
+ this.configurationFragmentPolicy = rule.getRuleClassObject().getConfigurationFragmentPolicy();
this.configuration = Preconditions.checkNotNull(configuration);
this.hostConfiguration = Preconditions.checkNotNull(hostConfiguration);
this.prerequisiteValidator = prerequisiteValidator;