diff options
author | Michael Staib <mstaib@google.com> | 2015-09-29 23:31:51 +0000 |
---|---|---|
committer | Florian Weikert <fwe@google.com> | 2015-09-30 09:36:25 +0000 |
commit | b51251ed0df121b50fba315d4eee17fa40049e83 (patch) | |
tree | d36907ff0df148711168c8cfaa8cc2eb43201f61 /src/main/java/com/google/devtools/build/lib/analysis/RuleContext.java | |
parent | 5fb1073d31e392e2f39a067647337043500b348e (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.java | 13 |
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; |