diff options
author | Eric Fellheimer <felly@google.com> | 2015-08-12 23:24:21 +0000 |
---|---|---|
committer | Florian Weikert <fwe@google.com> | 2015-08-13 14:01:42 +0000 |
commit | b5c98845052719685ba532419371b07e0e7ed790 (patch) | |
tree | ecafdc41c06372224aeab01805ed1d915a2f8885 /src/main/java/com/google/devtools/build/lib/skyframe/TransitiveBaseTraversalFunction.java | |
parent | e013c7da6acb1c358f4bcfeb4e4d57ee6d83e0cc (diff) |
TransitiveTraversalFunction now implements "conservative" (a la ConservativeAspectResolver) aspect resolution.
--
MOS_MIGRATED_REVID=100526575
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/skyframe/TransitiveBaseTraversalFunction.java')
-rw-r--r-- | src/main/java/com/google/devtools/build/lib/skyframe/TransitiveBaseTraversalFunction.java | 36 |
1 files changed, 6 insertions, 30 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/TransitiveBaseTraversalFunction.java b/src/main/java/com/google/devtools/build/lib/skyframe/TransitiveBaseTraversalFunction.java index 36484551e6..fab884281a 100644 --- a/src/main/java/com/google/devtools/build/lib/skyframe/TransitiveBaseTraversalFunction.java +++ b/src/main/java/com/google/devtools/build/lib/skyframe/TransitiveBaseTraversalFunction.java @@ -15,11 +15,8 @@ package com.google.devtools.build.lib.skyframe; import com.google.common.base.Preconditions; import com.google.common.collect.Lists; -import com.google.common.collect.Multimap; import com.google.devtools.build.lib.events.Event; import com.google.devtools.build.lib.events.EventHandler; -import com.google.devtools.build.lib.packages.AspectDefinition; -import com.google.devtools.build.lib.packages.Attribute; import com.google.devtools.build.lib.packages.InputFile; import com.google.devtools.build.lib.packages.NoSuchPackageException; import com.google.devtools.build.lib.packages.NoSuchTargetException; @@ -37,7 +34,6 @@ 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.HashSet; import java.util.List; import java.util.Map.Entry; @@ -143,32 +139,12 @@ abstract class TransitiveBaseTraversalFunction<TProcessedTargets> return Label.print(((Label) skyKey.argument())); } - private Iterable<SkyKey> getLabelAspectKeys(Target target, Environment env) { - List<SkyKey> depKeys = Lists.newArrayList(); - if (target instanceof Rule) { - Multimap<Attribute, Label> transitions = - ((Rule) target).getTransitions(Rule.NO_NODEP_ATTRIBUTES); - for (Entry<Attribute, Label> entry : transitions.entries()) { - SkyKey packageKey = PackageValue.key(entry.getValue().getPackageIdentifier()); - try { - PackageValue pkgValue = (PackageValue) env.getValueOrThrow(packageKey, - NoSuchThingException.class); - if (pkgValue == null) { - continue; - } - Collection<Label> labels = AspectDefinition.visitAspectsIfRequired(target, entry.getKey(), - pkgValue.getPackage().getTarget(entry.getValue().getName())).values(); - for (Label label : labels) { - depKeys.add(getKey(label)); - } - } catch (NoSuchThingException e) { - // Do nothing. This error was handled when we computed the corresponding - // TransitiveTargetValue. - } - } - } - return depKeys; - } + /** + * Return an Iterable of SkyKeys corresponding to the Aspect-related dependencies of target. + * + * <p>This method may return a conservative over-approximation of the exact set. + */ + protected abstract Iterable<SkyKey> getLabelAspectKeys(Target target, Environment env); private Iterable<SkyKey> getLabelDepKeys(Target target) { List<SkyKey> depKeys = Lists.newArrayList(); |