diff options
author | 2015-09-25 21:35:26 +0000 | |
---|---|---|
committer | 2015-09-28 11:39:40 +0000 | |
commit | e27d06308902f44b53809cffd23fc8064e8a7297 (patch) | |
tree | 8b04c86cf20edc174bb230e33ab455b38fb9bd73 /src/main/java/com/google/devtools/build/lib/skyframe/TransitiveTraversalFunction.java | |
parent | 7bd3e023e4791468efe06a989645d56c8cf880a4 (diff) |
Clean up Aspect checks in query tests.
--
MOS_MIGRATED_REVID=103977080
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/skyframe/TransitiveTraversalFunction.java')
-rw-r--r-- | src/main/java/com/google/devtools/build/lib/skyframe/TransitiveTraversalFunction.java | 58 |
1 files changed, 26 insertions, 32 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/TransitiveTraversalFunction.java b/src/main/java/com/google/devtools/build/lib/skyframe/TransitiveTraversalFunction.java index 955d8ee238..bd28a39b4c 100644 --- a/src/main/java/com/google/devtools/build/lib/skyframe/TransitiveTraversalFunction.java +++ b/src/main/java/com/google/devtools/build/lib/skyframe/TransitiveTraversalFunction.java @@ -13,25 +13,24 @@ // limitations under the License. package com.google.devtools.build.lib.skyframe; -import com.google.common.collect.ImmutableSet; -import com.google.common.collect.LinkedHashMultimap; -import com.google.common.collect.Multimap; +import com.google.common.collect.ImmutableList; import com.google.devtools.build.lib.cmdline.Label; import com.google.devtools.build.lib.collect.nestedset.NestedSet; import com.google.devtools.build.lib.events.EventHandler; import com.google.devtools.build.lib.packages.AspectDefinition; -import com.google.devtools.build.lib.packages.AspectFactory; import com.google.devtools.build.lib.packages.Attribute; import com.google.devtools.build.lib.packages.NoSuchPackageException; import com.google.devtools.build.lib.packages.NoSuchTargetException; -import com.google.devtools.build.lib.packages.Rule; +import com.google.devtools.build.lib.packages.NoSuchThingException; import com.google.devtools.build.lib.packages.Target; import com.google.devtools.build.lib.skyframe.TransitiveTraversalFunction.DummyAccumulator; import com.google.devtools.build.skyframe.SkyKey; import com.google.devtools.build.skyframe.SkyValue; import com.google.devtools.build.skyframe.ValueOrException2; +import java.util.Collection; import java.util.Map.Entry; +import java.util.Set; /** * This class is like {@link TransitiveTargetFunction}, but the values it returns do not contain @@ -77,41 +76,36 @@ public class TransitiveTraversalFunction extends TransitiveBaseTraversalFunction } } + protected Collection<Label> getAspectLabels(Target fromTarget, Attribute attr, Label toLabel, + ValueOrException2<NoSuchPackageException, NoSuchTargetException> toVal, Environment env) { + try { + if (toVal == null) { + return ImmutableList.of(); + } + TransitiveTraversalValue traversalVal = (TransitiveTraversalValue) toVal.get(); + if (traversalVal == null || traversalVal.getProviders() == null) { + return ImmutableList.of(); + } + // Retrieve the providers of the dep from the TransitiveTraversalValue, so we can avoid + // issuing a dep on its defining Package. + Set<String> providers = traversalVal.getProviders(); + return AspectDefinition.visitAspectsIfRequired(fromTarget, attr, providers).values(); + } catch (NoSuchThingException e) { + // Do nothing. This error was handled when we computed the corresponding + // TransitiveTargetValue. + return ImmutableList.of(); + } + } + @Override SkyValue computeSkyValue(TargetAndErrorIfAny targetAndErrorIfAny, DummyAccumulator processedTargets) { NoSuchTargetException errorLoadingTarget = targetAndErrorIfAny.getErrorLoadingTarget(); return errorLoadingTarget == null - ? TransitiveTraversalValue.SUCCESSFUL_TRANSITIVE_TRAVERSAL_VALUE + ? TransitiveTraversalValue.forTarget(targetAndErrorIfAny.getTarget()) : TransitiveTraversalValue.unsuccessfulTransitiveTraversal(errorLoadingTarget); } - @Override - protected Iterable<SkyKey> getStrictLabelAspectKeys(Target target, Environment env) { - return ImmutableSet.of(); - } - - @Override - protected Iterable<SkyKey> getConservativeLabelAspectKeys(Target target) { - if (!(target instanceof Rule)) { - return ImmutableSet.of(); - } - Rule rule = (Rule) target; - Multimap<Attribute, Label> attibuteMap = LinkedHashMultimap.create(); - for (Attribute attribute : rule.getTransitions(Rule.NO_NODEP_ATTRIBUTES).keys()) { - for (Class<? extends AspectFactory<?, ?, ?>> aspectFactory : attribute.getAspects()) { - AspectDefinition.addAllAttributesOfAspect(rule, attibuteMap, - AspectFactory.Util.create(aspectFactory).getDefinition(), Rule.ALL_DEPS); - } - } - - ImmutableSet.Builder<SkyKey> depKeys = new ImmutableSet.Builder<>(); - for (Label label : attibuteMap.values()) { - depKeys.add(getKey(label)); - } - return depKeys.build(); - } - /** * Because {@link TransitiveTraversalFunction} is invoked only when its side-effects are desired, * this value accumulator has nothing to keep track of. |