aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build/lib/analysis/RuleContext.java
diff options
context:
space:
mode:
authorGravatar Dmitry Lomov <dslomov@google.com>2015-12-16 15:10:20 +0000
committerGravatar Damien Martin-Guillerez <dmarting@google.com>2015-12-16 15:31:44 +0000
commitace678e16def33a94ad1cb3bec7336d894510272 (patch)
treef83705c727e7af498cc2e2ad0e75020d866d14c0 /src/main/java/com/google/devtools/build/lib/analysis/RuleContext.java
parent8853df9a19dabc72c3b723b84e6cb69b6fb2884e (diff)
Implement aspect attributes and expose them to aspect implementation function.
-- MOS_MIGRATED_REVID=110356954
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.java19
1 files changed, 14 insertions, 5 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 b75c6b9d11..cc9951458f 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
@@ -136,7 +136,7 @@ public final class RuleContext extends TargetContext
private final Set<ConfigMatchingProvider> configConditions;
private final AttributeMap attributes;
private final ImmutableSet<String> features;
- private final Map<String, Attribute> aspectAttributes;
+ private final ImmutableMap<String, Attribute> aspectAttributes;
private final BuildConfiguration hostConfiguration;
private final ConfigurationFragmentPolicy configurationFragmentPolicy;
private final Class<? extends BuildConfiguration.Fragment> universalFragment;
@@ -147,11 +147,13 @@ public final class RuleContext extends TargetContext
/* lazily computed cache for Make variables, computed from the above. See get... method */
private transient ConfigurationMakeVariableContext configurationMakeVariableContext = null;
- private RuleContext(Builder builder, ListMultimap<String, ConfiguredTarget> targetMap,
+ private RuleContext(
+ Builder builder,
+ ListMultimap<String, ConfiguredTarget> targetMap,
ListMultimap<String, ConfiguredFilesetEntry> filesetEntryMap,
Set<ConfigMatchingProvider> configConditions,
Class<? extends BuildConfiguration.Fragment> universalFragment,
- Map<String, Attribute> aspectAttributes) {
+ ImmutableMap<String, Attribute> aspectAttributes) {
super(builder.env, builder.rule, builder.configuration, builder.prerequisiteMap.get(null),
builder.visibility);
this.rule = builder.rule;
@@ -234,6 +236,13 @@ public final class RuleContext extends TargetContext
}
/**
+ * Attributes from aspects.
+ */
+ public ImmutableMap<String, Attribute> getAspectAttributes() {
+ return aspectAttributes;
+ }
+
+ /**
* Accessor for the Rule's attribute values.
*/
public AttributeMap attributes() {
@@ -1241,7 +1250,7 @@ public final class RuleContext extends TargetContext
private ListMultimap<Attribute, ConfiguredTarget> prerequisiteMap;
private Set<ConfigMatchingProvider> configConditions;
private NestedSet<PackageSpecification> visibility;
- private Map<String, Attribute> aspectAttributes;
+ private ImmutableMap<String, Attribute> aspectAttributes;
Builder(AnalysisEnvironment env, Rule rule, BuildConfiguration configuration,
BuildConfiguration hostConfiguration,
@@ -1284,7 +1293,7 @@ public final class RuleContext extends TargetContext
* Adds attributes which are defined by an Aspect (and not by RuleClass).
*/
Builder setAspectAttributes(Map<String, Attribute> aspectAttributes) {
- this.aspectAttributes = aspectAttributes;
+ this.aspectAttributes = ImmutableMap.copyOf(aspectAttributes);
return this;
}