diff options
author | juliexxia <juliexxia@google.com> | 2018-03-15 09:29:10 -0700 |
---|---|---|
committer | Copybara-Service <copybara-piper@google.com> | 2018-03-15 09:30:32 -0700 |
commit | 2267e2a783231d02822d182012b8047f4694be5a (patch) | |
tree | 979a91921dc8aca59755a19e7c15556fa68231f9 /src/main/java/com/google/devtools/build/lib/analysis/Util.java | |
parent | 548c3957fa0f553afe20259d1a114e5a01f04c5b (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.java | 21 |
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())); + } + } } } |