Implement aspect attributes and expose them to aspect implementation function.
--
MOS_MIGRATED_REVID=110356954
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 b75c6b9..cc99514 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 @@
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 @@
/* 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 @@
}
/**
+ * Attributes from aspects.
+ */
+ public ImmutableMap<String, Attribute> getAspectAttributes() {
+ return aspectAttributes;
+ }
+
+ /**
* Accessor for the Rule's attribute values.
*/
public AttributeMap attributes() {
@@ -1241,7 +1250,7 @@
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 @@
* 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;
}