Add RuleContext#getConfiguredTargetAndDataMap and use it in analysis/Util.
PiperOrigin-RevId: 188629293
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 8a62dd2..6bab955 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
@@ -375,6 +375,14 @@
return Multimaps.transformValues(targetMap, ConfiguredTargetAndData::getConfiguredTarget);
}
+ /**
+ * Returns an immutable map from attribute name to list of {@link ConfiguredTargetAndData} objects
+ * for that attribute.
+ */
+ public ListMultimap<String, ConfiguredTargetAndData> getConfiguredTargetAndDataMap() {
+ return targetMap;
+ }
+
private List<ConfiguredTargetAndData> getConfiguredTargetAndTargetDeps(String key) {
return targetMap.get(key);
}
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/Util.java b/src/main/java/com/google/devtools/build/lib/analysis/Util.java
index 02d05b5..e379ffc 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/Util.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/Util.java
@@ -22,6 +22,7 @@
import com.google.devtools.build.lib.collect.compacthashset.CompactHashSet;
import com.google.devtools.build.lib.packages.AttributeMap;
import com.google.devtools.build.lib.packages.Target;
+import com.google.devtools.build.lib.skyframe.ConfiguredTargetAndData;
import com.google.devtools.build.lib.skyframe.ConfiguredTargetKey;
import com.google.devtools.build.lib.vfs.PathFragment;
import java.util.List;
@@ -83,10 +84,10 @@
Set<ConfiguredTargetKey> maybeImplicitDeps = CompactHashSet.create();
Set<ConfiguredTargetKey> explicitDeps = CompactHashSet.create();
AttributeMap attributes = ruleContext.attributes();
- ListMultimap<String, ? extends TransitiveInfoCollection> targetMap =
- ruleContext.getConfiguredTargetMap();
+ ListMultimap<String, ConfiguredTargetAndData> targetMap =
+ ruleContext.getConfiguredTargetAndDataMap();
for (String attrName : attributes.getAttributeNames()) {
- List<? extends TransitiveInfoCollection> attrValues = targetMap.get(attrName);
+ List<ConfiguredTargetAndData> attrValues = targetMap.get(attrName);
if (attrValues != null && !attrValues.isEmpty()) {
if (attributes.isAttributeValueExplicitlySpecified(attrName)) {
addLabelsAndConfigs(explicitDeps, attrValues);
@@ -111,8 +112,11 @@
}
private static void addLabelsAndConfigs(
- Set<ConfiguredTargetKey> set, List<? extends TransitiveInfoCollection> deps) {
+ Set<ConfiguredTargetKey> set, List<ConfiguredTargetAndData> deps) {
deps.forEach(
- target -> set.add(ConfiguredTargetKey.of(target.getLabel(), target.getConfiguration())));
+ target ->
+ set.add(
+ ConfiguredTargetKey.of(
+ target.getConfiguredTarget().getLabel(), target.getConfiguration())));
}
}