Remove shortcut addProvider() methods, to prepare for AutoValue-ed providers.
Such providers have a create() method which returns an object whose runtime class differs from its compile-time class, which makes the shortcut methods behave unexpectedly.
--
MOS_MIGRATED_REVID=109815042
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/ConfiguredAspect.java b/src/main/java/com/google/devtools/build/lib/analysis/ConfiguredAspect.java
index 0af007d..bbc3f02 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/ConfiguredAspect.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/ConfiguredAspect.java
@@ -117,16 +117,11 @@
return this;
}
- /**
- * Adds a provider to the aspect. Shortcut for addProvider(value.getClass(), value).
- */
- public Builder addProvider(TransitiveInfoProvider value) {
- return addProvider(value.getClass(), value);
- }
-
- public Builder addProviders(Iterable<? extends TransitiveInfoProvider> providers) {
- for (TransitiveInfoProvider provider : providers) {
- addProvider(provider);
+ public Builder addProviders(
+ Map<Class<? extends TransitiveInfoProvider>, TransitiveInfoProvider> providers) {
+ for (Map.Entry<Class<? extends TransitiveInfoProvider>, TransitiveInfoProvider> provider :
+ providers.entrySet()) {
+ addProvider(provider.getKey(), provider.getValue());
}
return this;
}
@@ -170,7 +165,7 @@
providers.put(SkylarkProviders.class, new SkylarkProviders(skylarkProvidersMap));
}
- addProvider(createExtraActionProvider(ruleContext));
+ addProvider(ExtraActionArtifactsProvider.class, createExtraActionProvider(ruleContext));
return new ConfiguredAspect(name, ImmutableMap.copyOf(providers));
}
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/RuleConfiguredTargetBuilder.java b/src/main/java/com/google/devtools/build/lib/analysis/RuleConfiguredTargetBuilder.java
index 2f12034..4deff61 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/RuleConfiguredTargetBuilder.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/RuleConfiguredTargetBuilder.java
@@ -235,13 +235,6 @@
}
/**
- * Add a specific provider with a given value. Shortcut for addProvider(value.getClass(), value).
- */
- public RuleConfiguredTargetBuilder addProvider(TransitiveInfoProvider value) {
- return addProvider(value.getClass(), value);
- }
-
- /**
* Add multiple providers with given values.
*/
public RuleConfiguredTargetBuilder addProviders(
@@ -254,17 +247,6 @@
}
/**
- * Add multiple providers with given values.
- */
- public RuleConfiguredTargetBuilder addProviders(
- Iterable<? extends TransitiveInfoProvider> providers) {
- for (TransitiveInfoProvider provider : providers) {
- addProvider(provider);
- }
- return this;
- }
-
- /**
* Add a Skylark transitive info. The provider value must be safe (i.e. a String, a Boolean,
* an Integer, an Artifact, a Label, None, a Java TransitiveInfoProvider or something composed
* from these in Skylark using lists, sets, structs or dicts). Otherwise an EvalException is
diff --git a/src/test/java/com/google/devtools/build/lib/analysis/AspectTest.java b/src/test/java/com/google/devtools/build/lib/analysis/AspectTest.java
index f7f40c6..d4f2801 100644
--- a/src/test/java/com/google/devtools/build/lib/analysis/AspectTest.java
+++ b/src/test/java/com/google/devtools/build/lib/analysis/AspectTest.java
@@ -237,6 +237,7 @@
Object lateBoundPrereq = ruleContext.getPrerequisite(":late", TARGET);
return new ConfiguredAspect.Builder("testaspect", ruleContext)
.addProvider(
+ AspectInfo.class,
new AspectInfo(
NestedSetBuilder.create(
Order.STABLE_ORDER, lateBoundPrereq != null ? "non-empty" : "empty")))