aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build/lib/skyframe/TransitiveTargetCycleReporter.java
diff options
context:
space:
mode:
authorGravatar Ulf Adams <ulfjack@google.com>2015-09-25 19:26:05 +0000
committerGravatar Han-Wen Nienhuys <hanwen@google.com>2015-09-28 11:39:35 +0000
commit9d43bd0218bdd60f30b462d31c2cc387b4bfa594 (patch)
tree69712f0c8e9de02c13ecd5b120c5b6f364457881 /src/main/java/com/google/devtools/build/lib/skyframe/TransitiveTargetCycleReporter.java
parent869605e728d947645db70a9d1eb328d220f97929 (diff)
Use the same method as LoadedPackageProvider.Bridge to look up targets.
This unfortunately requires injecting an EventHandler into the getTargetForLabel call, which is not super nice. On the other hand, it's not clear how this can be much better - looking up targets in the cycle reporter doesn't lend itself to prettiness. -- MOS_MIGRATED_REVID=103965373
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/skyframe/TransitiveTargetCycleReporter.java')
-rw-r--r--src/main/java/com/google/devtools/build/lib/skyframe/TransitiveTargetCycleReporter.java14
1 files changed, 8 insertions, 6 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/TransitiveTargetCycleReporter.java b/src/main/java/com/google/devtools/build/lib/skyframe/TransitiveTargetCycleReporter.java
index e3aba5768c..d2803a28e5 100644
--- a/src/main/java/com/google/devtools/build/lib/skyframe/TransitiveTargetCycleReporter.java
+++ b/src/main/java/com/google/devtools/build/lib/skyframe/TransitiveTargetCycleReporter.java
@@ -18,9 +18,10 @@ import com.google.common.collect.ImmutableList;
import com.google.common.collect.Iterables;
import com.google.common.collect.Lists;
import com.google.devtools.build.lib.cmdline.Label;
+import com.google.devtools.build.lib.events.EventHandler;
import com.google.devtools.build.lib.packages.PackageGroup;
import com.google.devtools.build.lib.packages.Target;
-import com.google.devtools.build.lib.pkgcache.LoadedPackageProvider;
+import com.google.devtools.build.lib.pkgcache.PackageProvider;
import com.google.devtools.build.skyframe.CycleInfo;
import com.google.devtools.build.skyframe.SkyKey;
@@ -35,8 +36,8 @@ class TransitiveTargetCycleReporter extends AbstractLabelCycleReporter {
private static final Predicate<SkyKey> IS_TRANSITIVE_TARGET_SKY_KEY =
SkyFunctions.isSkyFunction(SkyFunctions.TRANSITIVE_TARGET);
- TransitiveTargetCycleReporter(LoadedPackageProvider loadedPackageProvider) {
- super(loadedPackageProvider);
+ TransitiveTargetCycleReporter(PackageProvider packageProvider) {
+ super(packageProvider);
}
@Override
@@ -57,8 +58,9 @@ class TransitiveTargetCycleReporter extends AbstractLabelCycleReporter {
}
@Override
- protected String getAdditionalMessageAboutCycle(SkyKey topLevelKey, CycleInfo cycleInfo) {
- Target currentTarget = getTargetForLabel(getLabel(topLevelKey));
+ protected String getAdditionalMessageAboutCycle(
+ EventHandler eventHandler, SkyKey topLevelKey, CycleInfo cycleInfo) {
+ Target currentTarget = getTargetForLabel(eventHandler, getLabel(topLevelKey));
List<SkyKey> keys = Lists.newArrayList();
if (!cycleInfo.getPathToCycle().isEmpty()) {
keys.add(topLevelKey);
@@ -70,7 +72,7 @@ class TransitiveTargetCycleReporter extends AbstractLabelCycleReporter {
keys.add(cycleInfo.getCycle().get(0));
for (SkyKey nextKey : keys) {
Label nextLabel = getLabel(nextKey);
- Target nextTarget = getTargetForLabel(nextLabel);
+ Target nextTarget = getTargetForLabel(eventHandler, nextLabel);
// This is inefficient but it's no big deal since we only do this when there's a cycle.
if (currentTarget.getVisibility().getDependencyLabels().contains(nextLabel)
&& !nextTarget.getTargetKind().equals(PackageGroup.targetKind())) {