aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build/lib/analysis/Util.java
diff options
context:
space:
mode:
authorGravatar juliexxia <juliexxia@google.com>2018-03-15 09:29:10 -0700
committerGravatar Copybara-Service <copybara-piper@google.com>2018-03-15 09:30:32 -0700
commit2267e2a783231d02822d182012b8047f4694be5a (patch)
tree979a91921dc8aca59755a19e7c15556fa68231f9 /src/main/java/com/google/devtools/build/lib/analysis/Util.java
parent548c3957fa0f553afe20259d1a114e5a01f04c5b (diff)
Modify CTQEnvironment and associated files to handle AliasConfiguredTargets. Always handle AliasConfiguredTargets as separate nodes from their "actual" value. This is helpful in understanding certain query results e.g. somepath.
PiperOrigin-RevId: 189196863
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/analysis/Util.java')
-rw-r--r--src/main/java/com/google/devtools/build/lib/analysis/Util.java21
1 files changed, 16 insertions, 5 deletions
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 e379ffcdc9..2c2e178206 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,11 +22,13 @@ import com.google.devtools.build.lib.cmdline.Label;
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.rules.AliasConfiguredTarget;
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;
import java.util.Set;
+import java.util.stream.Collectors;
/**
* Utility methods for use by ConfiguredTarget implementations.
@@ -113,10 +115,19 @@ public abstract class Util {
private static void addLabelsAndConfigs(
Set<ConfiguredTargetKey> set, List<ConfiguredTargetAndData> deps) {
- deps.forEach(
- target ->
- set.add(
- ConfiguredTargetKey.of(
- target.getConfiguredTarget().getLabel(), target.getConfiguration())));
+ for (ConfiguredTarget dep :
+ deps.stream()
+ .map(ConfiguredTargetAndData::getConfiguredTarget)
+ .collect(Collectors.toList())) {
+ // This must be done because {@link AliasConfiguredTarget#getLabel} returns the label of the
+ // "actual" configured target instead of the alias.
+ if (dep instanceof AliasConfiguredTarget) {
+ set.add(
+ ConfiguredTargetKey.of(
+ ((AliasConfiguredTarget) dep).getOriginalLabel(), dep.getConfiguration()));
+ } else {
+ set.add(ConfiguredTargetKey.of(dep.getLabel(), dep.getConfiguration()));
+ }
+ }
}
}