diff options
author | Lukacs Berki <lberki@google.com> | 2016-06-14 09:08:29 +0000 |
---|---|---|
committer | Yue Gan <yueg@google.com> | 2016-06-14 11:03:14 +0000 |
commit | bba75d81fe5c740ca79fbb2c179a30e1ba3f0f74 (patch) | |
tree | fa8a575020f7d89baf95737f7bc4d75dfa7c079e /src/main/java/com/google/devtools/build/lib/skyframe/ConfiguredTargetCycleReporter.java | |
parent | 2571982bbfdda44b176628e3354527970cb61407 (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.java | 19 |
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(); } } } |