aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build/lib/skyframe/ConfiguredTargetCycleReporter.java
diff options
context:
space:
mode:
authorGravatar Lukacs Berki <lberki@google.com>2016-06-14 09:08:29 +0000
committerGravatar Yue Gan <yueg@google.com>2016-06-14 11:03:14 +0000
commitbba75d81fe5c740ca79fbb2c179a30e1ba3f0f74 (patch)
treefa8a575020f7d89baf95737f7bc4d75dfa7c079e /src/main/java/com/google/devtools/build/lib/skyframe/ConfiguredTargetCycleReporter.java
parent2571982bbfdda44b176628e3354527970cb61407 (diff)
Report cycles involving aspects correctly.
This involved refactoring BuildViewTestCase a bit so that its behavior is closer to that of Bazel with --experimental_interleave_loading_and_analysis. RELNOTES: -- MOS_MIGRATED_REVID=124816624
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/skyframe/ConfiguredTargetCycleReporter.java')
-rw-r--r--src/main/java/com/google/devtools/build/lib/skyframe/ConfiguredTargetCycleReporter.java19
1 files changed, 13 insertions, 6 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/ConfiguredTargetCycleReporter.java b/src/main/java/com/google/devtools/build/lib/skyframe/ConfiguredTargetCycleReporter.java
index 70b7ed8fac..ca05c1c175 100644
--- a/src/main/java/com/google/devtools/build/lib/skyframe/ConfiguredTargetCycleReporter.java
+++ b/src/main/java/com/google/devtools/build/lib/skyframe/ConfiguredTargetCycleReporter.java
@@ -18,11 +18,11 @@ import static com.google.devtools.build.lib.skyframe.SkyFunctions.TRANSITIVE_TAR
import com.google.common.base.Function;
import com.google.common.base.Predicate;
import com.google.common.base.Predicates;
-import com.google.common.base.Verify;
import com.google.common.collect.Iterables;
import com.google.devtools.build.lib.cmdline.Label;
import com.google.devtools.build.lib.events.EventHandler;
import com.google.devtools.build.lib.pkgcache.PackageProvider;
+import com.google.devtools.build.lib.skyframe.AspectValue.AspectKey;
import com.google.devtools.build.skyframe.CycleInfo;
import com.google.devtools.build.skyframe.SkyKey;
@@ -37,7 +37,9 @@ import com.google.devtools.build.skyframe.SkyKey;
class ConfiguredTargetCycleReporter extends AbstractLabelCycleReporter {
private static final Predicate<SkyKey> IS_CONFIGURED_TARGET_SKY_KEY =
- SkyFunctions.isSkyFunction(SkyFunctions.CONFIGURED_TARGET);
+ Predicates.or(
+ SkyFunctions.isSkyFunction(SkyFunctions.CONFIGURED_TARGET),
+ SkyFunctions.isSkyFunction(SkyFunctions.ASPECT));
private static final Predicate<SkyKey> IS_TRANSITIVE_TARGET_SKY_KEY =
SkyFunctions.isSkyFunction(TRANSITIVE_TARGET);
@@ -97,8 +99,10 @@ class ConfiguredTargetCycleReporter extends AbstractLabelCycleReporter {
@Override
public String prettyPrint(SkyKey key) {
- if (IS_CONFIGURED_TARGET_SKY_KEY.apply(key)) {
+ if (SkyFunctions.isSkyFunction(SkyFunctions.CONFIGURED_TARGET).apply(key)) {
return ((ConfiguredTargetKey) key.argument()).prettyPrint();
+ } else if (SkyFunctions.isSkyFunction(SkyFunctions.ASPECT).apply(key)) {
+ return ((AspectKey) key.argument()).prettyPrint();
} else {
return getLabel(key).toString();
}
@@ -106,11 +110,14 @@ class ConfiguredTargetCycleReporter extends AbstractLabelCycleReporter {
@Override
public Label getLabel(SkyKey key) {
- if (IS_CONFIGURED_TARGET_SKY_KEY.apply(key)) {
+ if (SkyFunctions.isSkyFunction(SkyFunctions.CONFIGURED_TARGET).apply(key)) {
return ((ConfiguredTargetKey) key.argument()).getLabel();
- } else {
- Verify.verify(IS_TRANSITIVE_TARGET_SKY_KEY.apply(key));
+ } else if (SkyFunctions.isSkyFunction(SkyFunctions.ASPECT).apply(key)) {
+ return ((AspectKey) key.argument()).getLabel();
+ } else if (SkyFunctions.isSkyFunction(TRANSITIVE_TARGET).apply(key)) {
return (Label) key.argument();
+ } else {
+ throw new UnsupportedOperationException();
}
}
}