aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build/lib/analysis/AnalysisUtils.java
diff options
context:
space:
mode:
authorGravatar Sergio Campama <kaipi@google.com>2016-12-09 21:47:35 +0000
committerGravatar John Cater <jcater@google.com>2016-12-12 20:35:09 +0000
commitfd93143f93a9873218cd2eb783a0bff322847213 (patch)
treeec2f06ee63d37446a63aec7ceb7a5a24ff8cd91b /src/main/java/com/google/devtools/build/lib/analysis/AnalysisUtils.java
parent905a29d0e61d5393f2b7646fae8e6b4a819e68f4 (diff)
Add a testing Skylark module that exposes an ExecutionInfoProvider constructor.
-- PiperOrigin-RevId: 141594768 MOS_MIGRATED_REVID=141594768
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/analysis/AnalysisUtils.java')
-rw-r--r--src/main/java/com/google/devtools/build/lib/analysis/AnalysisUtils.java19
1 files changed, 19 insertions, 0 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/AnalysisUtils.java b/src/main/java/com/google/devtools/build/lib/analysis/AnalysisUtils.java
index 495d5ebdd4..1abc8934e4 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/AnalysisUtils.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/AnalysisUtils.java
@@ -25,6 +25,8 @@ import com.google.devtools.build.lib.collect.nestedset.NestedSet;
import com.google.devtools.build.lib.collect.nestedset.NestedSetBuilder;
import com.google.devtools.build.lib.collect.nestedset.Order;
import com.google.devtools.build.lib.packages.BuildType;
+import com.google.devtools.build.lib.packages.SkylarkClassObject;
+import com.google.devtools.build.lib.packages.SkylarkClassObjectConstructor;
import com.google.devtools.build.lib.packages.TriState;
import com.google.devtools.build.lib.vfs.PathFragment;
@@ -77,6 +79,23 @@ public final class AnalysisUtils {
}
/**
+ * Returns the list of declared providers (native and Skylark) of the specified Skylark key from a
+ * set of transitive info collections.
+ */
+ public static Iterable<SkylarkClassObject> getProviders(
+ Iterable<? extends TransitiveInfoCollection> prerequisites,
+ final SkylarkClassObjectConstructor.Key skylarkKey) {
+ ImmutableList.Builder<SkylarkClassObject> result = ImmutableList.builder();
+ for (TransitiveInfoCollection prerequisite : prerequisites) {
+ SkylarkClassObject prerequisiteProvider = prerequisite.get(skylarkKey);
+ if (prerequisiteProvider != null) {
+ result.add(prerequisiteProvider);
+ }
+ }
+ return result.build();
+ }
+
+ /**
* Returns the iterable of collections that have the specified provider.
*/
public static <S extends TransitiveInfoCollection, C extends TransitiveInfoProvider> Iterable<S>