aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com
diff options
context:
space:
mode:
authorGravatar elenairina <elenairina@google.com>2017-09-27 12:13:52 -0400
committerGravatar John Cater <jcater@google.com>2017-09-28 08:54:31 -0400
commitaeb21bc2b61d89e8e1cd79da6194a651d9f50610 (patch)
tree16d8f2b128fb476dab16ac86f6dbf7c33977c83f /src/main/java/com
parent41b29027a8d4c85eae0d44eca93dc5f4a090cfce (diff)
Add required/advertised Skylark providers.
This is needed to advertise and request JavaInfo (a native declared provider) instead of JavaCompilationArgsProvider. RELNOTES: None. PiperOrigin-RevId: 170205997
Diffstat (limited to 'src/main/java/com')
-rw-r--r--src/main/java/com/google/devtools/build/lib/packages/AspectDefinition.java9
-rw-r--r--src/main/java/com/google/devtools/build/lib/packages/RuleClass.java7
2 files changed, 16 insertions, 0 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/packages/AspectDefinition.java b/src/main/java/com/google/devtools/build/lib/packages/AspectDefinition.java
index 5570c3f913..a028e71a71 100644
--- a/src/main/java/com/google/devtools/build/lib/packages/AspectDefinition.java
+++ b/src/main/java/com/google/devtools/build/lib/packages/AspectDefinition.java
@@ -291,6 +291,15 @@ public final class AspectDefinition {
requiredProviders.addNativeSet(ImmutableSet.copyOf(providers));
return this;
}
+
+ /**
+ * Asserts that this aspect can only be evaluated for rules that supply all of the specified
+ * Skylark providers.
+ */
+ public Builder requireSkylarkProviders(SkylarkProviderIdentifier... skylarkProviders) {
+ requiredProviders.addSkylarkSet(ImmutableSet.copyOf(skylarkProviders));
+ return this;
+ }
public Builder requireAspectsWithProviders(
Iterable<ImmutableSet<SkylarkProviderIdentifier>> providerSets) {
diff --git a/src/main/java/com/google/devtools/build/lib/packages/RuleClass.java b/src/main/java/com/google/devtools/build/lib/packages/RuleClass.java
index 5709e64d7b..6e1e70b7ee 100644
--- a/src/main/java/com/google/devtools/build/lib/packages/RuleClass.java
+++ b/src/main/java/com/google/devtools/build/lib/packages/RuleClass.java
@@ -808,6 +808,13 @@ public class RuleClass {
return this;
}
+ public Builder advertiseSkylarkProvider(SkylarkProviderIdentifier... skylarkProviders) {
+ for (SkylarkProviderIdentifier skylarkProviderIdentifier : skylarkProviders) {
+ advertisedProviders.addSkylark(skylarkProviderIdentifier);
+ }
+ return this;
+ }
+
/**
* Set if the rule can have any provider. This is true for "alias" rules like
* <code>bind</code> .