aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools
diff options
context:
space:
mode:
authorGravatar Dmitry Lomov <dslomov@google.com>2015-11-02 17:17:20 +0000
committerGravatar David Chen <dzc@google.com>2015-11-02 23:18:55 +0000
commit6231d08672f1eceda34455d66b6aaffd18d73e60 (patch)
tree29daff4db47b5a529aa0a72e4ad5889d1e842651 /src/main/java/com/google/devtools
parent96f789448481eb7a981ed76c344c42042b3c30cb (diff)
Parametrize aspect definition with AspectParameters.
-- MOS_MIGRATED_REVID=106848269
Diffstat (limited to 'src/main/java/com/google/devtools')
-rw-r--r--src/main/java/com/google/devtools/build/lib/analysis/BuildView.java10
-rw-r--r--src/main/java/com/google/devtools/build/lib/analysis/DependencyResolver.java67
-rw-r--r--src/main/java/com/google/devtools/build/lib/analysis/config/BuildConfiguration.java2
-rw-r--r--src/main/java/com/google/devtools/build/lib/ideinfo/AndroidStudioInfoAspect.java2
-rw-r--r--src/main/java/com/google/devtools/build/lib/packages/AspectClass.java2
-rw-r--r--src/main/java/com/google/devtools/build/lib/packages/AspectDefinition.java8
-rw-r--r--src/main/java/com/google/devtools/build/lib/packages/AspectWithParameters.java (renamed from src/main/java/com/google/devtools/build/lib/analysis/AspectWithParameters.java)16
-rw-r--r--src/main/java/com/google/devtools/build/lib/packages/Attribute.java9
-rw-r--r--src/main/java/com/google/devtools/build/lib/packages/NativeAspectClass.java6
-rw-r--r--src/main/java/com/google/devtools/build/lib/packages/Rule.java2
-rw-r--r--src/main/java/com/google/devtools/build/lib/query2/output/ConservativeAspectResolver.java9
-rw-r--r--src/main/java/com/google/devtools/build/lib/query2/output/PreciseAspectResolver.java9
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/SkylarkRuleClassFunctions.java3
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/android/AndroidNeverlinkAspect.java2
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/objc/AbstractJ2ObjcProtoAspect.java2
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/objc/J2ObjcAspect.java2
-rw-r--r--src/main/java/com/google/devtools/build/lib/skyframe/AspectFunction.java3
-rw-r--r--src/main/java/com/google/devtools/build/lib/skyframe/AspectValue.java36
-rw-r--r--src/main/java/com/google/devtools/build/lib/skyframe/ConfiguredTargetFunction.java52
-rw-r--r--src/main/java/com/google/devtools/build/lib/skyframe/PostConfiguredTargetFunction.java6
-rw-r--r--src/main/java/com/google/devtools/build/lib/skyframe/SkyframeExecutor.java2
-rw-r--r--src/main/java/com/google/devtools/build/lib/skyframe/TransitiveBaseTraversalFunction.java4
-rw-r--r--src/main/java/com/google/devtools/build/lib/skyframe/TransitiveTargetFunction.java4
-rw-r--r--src/main/java/com/google/devtools/build/lib/skyframe/TransitiveTraversalFunction.java6
24 files changed, 145 insertions, 119 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/BuildView.java b/src/main/java/com/google/devtools/build/lib/analysis/BuildView.java
index 8f40fcd68b..76ad8d1878 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/BuildView.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/BuildView.java
@@ -51,7 +51,6 @@ import com.google.devtools.build.lib.concurrent.ThreadSafety.ThreadCompatible;
import com.google.devtools.build.lib.events.Event;
import com.google.devtools.build.lib.events.EventHandler;
import com.google.devtools.build.lib.events.StoredEventHandler;
-import com.google.devtools.build.lib.packages.AspectParameters;
import com.google.devtools.build.lib.packages.Attribute;
import com.google.devtools.build.lib.packages.BuildType;
import com.google.devtools.build.lib.packages.NativeAspectClass;
@@ -892,9 +891,12 @@ public class BuildView {
TargetAndConfiguration ctNode = new TargetAndConfiguration(target);
ListMultimap<Attribute, Dependency> depNodeNames;
try {
- depNodeNames = resolver.dependentNodeMap(ctNode, configurations.getHostConfiguration(),
- /*aspect=*/null, AspectParameters.EMPTY,
- getConfigurableAttributeKeysForTesting(eventHandler, ctNode));
+ depNodeNames =
+ resolver.dependentNodeMap(
+ ctNode,
+ configurations.getHostConfiguration(),
+ /*aspect=*/ null,
+ getConfigurableAttributeKeysForTesting(eventHandler, ctNode));
} catch (EvalException e) {
throw new IllegalStateException(e);
}
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/DependencyResolver.java b/src/main/java/com/google/devtools/build/lib/analysis/DependencyResolver.java
index a18902b5dc..fcea1537c2 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/DependencyResolver.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/DependencyResolver.java
@@ -27,7 +27,7 @@ import com.google.devtools.build.lib.cmdline.Label;
import com.google.devtools.build.lib.collect.ImmutableSortedKeyListMultimap;
import com.google.devtools.build.lib.packages.AspectClass;
import com.google.devtools.build.lib.packages.AspectDefinition;
-import com.google.devtools.build.lib.packages.AspectParameters;
+import com.google.devtools.build.lib.packages.AspectWithParameters;
import com.google.devtools.build.lib.packages.Attribute;
import com.google.devtools.build.lib.packages.Attribute.LateBoundDefault;
import com.google.devtools.build.lib.packages.Attribute.SplitTransition;
@@ -204,9 +204,9 @@ public abstract class DependencyResolver {
* represent those edges. Visibility attributes are only visited if {@code visitVisibility} is
* {@code true}.
*
- * <p>If {@code aspect} is null, returns the dependent nodes of the configured target node
- * representing the given target and configuration, otherwise that of the aspect node accompanying
- * the aforementioned configured target node for the specified aspect.
+ * <p>If {@code aspectWithParameters} is null, returns the dependent nodes of the configured
+ * target node representing the given target and configuration, otherwise that of the aspect
+ * node accompanying the aforementioned configured target node for the specified aspect.
*
* <p>The values are not simply labels because this also implements the first step of applying
* configuration transitions, namely, split transitions. This needs to be done before the labels
@@ -218,8 +218,10 @@ public abstract class DependencyResolver {
* dependency.
*/
public final ListMultimap<Attribute, Dependency> dependentNodeMap(
- TargetAndConfiguration node, BuildConfiguration hostConfig, AspectDefinition aspect,
- AspectParameters aspectParameters, Set<ConfigMatchingProvider> configConditions)
+ TargetAndConfiguration node,
+ BuildConfiguration hostConfig,
+ AspectWithParameters aspectWithParameters,
+ Set<ConfigMatchingProvider> configConditions)
throws EvalException, InterruptedException {
Target target = node.getTarget();
BuildConfiguration config = node.getConfiguration();
@@ -238,8 +240,13 @@ public abstract class DependencyResolver {
visitTargetVisibility(node, outgoingEdges.get(null));
Rule rule = (Rule) target;
ListMultimap<Attribute, LabelAndConfiguration> labelMap =
- resolveAttributes(rule, aspect, config, hostConfig, configConditions);
- visitRule(rule, aspect, aspectParameters, labelMap, outgoingEdges);
+ resolveAttributes(
+ rule,
+ aspectWithParameters != null ? aspectWithParameters.getDefinition() : null,
+ config,
+ hostConfig,
+ configConditions);
+ visitRule(rule, aspectWithParameters, labelMap, outgoingEdges);
} else if (target instanceof PackageGroup) {
visitPackageGroup(node, (PackageGroup) target, outgoingEdges.get(null));
} else {
@@ -502,8 +509,8 @@ public abstract class DependencyResolver {
TargetAndConfiguration node, BuildConfiguration hostConfig,
Set<ConfigMatchingProvider> configConditions) throws InterruptedException {
try {
- return ImmutableSet.copyOf(dependentNodeMap(node, hostConfig, /*aspect=*/null,
- AspectParameters.EMPTY, configConditions).values());
+ return ImmutableSet.copyOf(
+ dependentNodeMap(node, hostConfig, /*aspect=*/ null, configConditions).values());
} catch (EvalException e) {
throw new IllegalStateException(e);
}
@@ -548,20 +555,22 @@ public abstract class DependencyResolver {
}
}
- private ImmutableSet<AspectWithParameters> requiredAspects(AspectDefinition aspectDefinition,
- AspectParameters aspectParameters, Attribute attribute, Target target, Rule originalRule) {
+ private ImmutableSet<AspectWithParameters> requiredAspects(
+ AspectWithParameters aspectWithParameters,
+ Attribute attribute,
+ Target target,
+ Rule originalRule) {
if (!(target instanceof Rule)) {
return ImmutableSet.of();
}
Set<AspectWithParameters> aspectCandidates =
- extractAspectCandidates(aspectDefinition, aspectParameters, attribute, originalRule);
+ extractAspectCandidates(aspectWithParameters, attribute, originalRule);
RuleClass ruleClass = ((Rule) target).getRuleClassObject();
ImmutableSet.Builder<AspectWithParameters> result = ImmutableSet.builder();
for (AspectWithParameters candidateClass : aspectCandidates) {
- AspectClass aspectClass = candidateClass.getAspectClass();
if (Sets.difference(
- aspectClass.getDefinition().getRequiredProviders(),
+ candidateClass.getDefinition().getRequiredProviders(),
ruleClass.getAdvertisedProviders())
.isEmpty()) {
result.add(candidateClass);
@@ -571,21 +580,18 @@ public abstract class DependencyResolver {
}
private static Set<AspectWithParameters> extractAspectCandidates(
- AspectDefinition aspectDefinition, AspectParameters aspectParameters,
- Attribute attribute, Rule originalRule) {
+ AspectWithParameters aspectWithParameters, Attribute attribute, Rule originalRule) {
// The order of this set will be deterministic. This is necessary because this order eventually
// influences the order in which aspects are merged into the main configured target, which in
// turn influences which aspect takes precedence if two emit the same provider (maybe this
// should be an error)
Set<AspectWithParameters> aspectCandidates = new LinkedHashSet<>();
- for (Map.Entry<AspectClass, AspectParameters> aspectWithParameters :
- attribute.getAspectsWithParameters(originalRule).entrySet()) {
- AspectClass key = aspectWithParameters.getKey();
- aspectCandidates.add(new AspectWithParameters(key, aspectWithParameters.getValue()));
- }
- if (aspectDefinition != null) {
- for (AspectClass aspect : aspectDefinition.getAttributeAspects().get(attribute.getName())) {
- aspectCandidates.add(new AspectWithParameters(aspect, aspectParameters));
+ aspectCandidates.addAll(attribute.getAspectsWithParameters(originalRule));
+ if (aspectWithParameters != null) {
+ for (AspectClass aspect :
+ aspectWithParameters.getDefinition().getAttributeAspects().get(attribute.getName())) {
+ aspectCandidates.add(
+ new AspectWithParameters(aspect, aspectWithParameters.getParameters()));
}
}
return aspectCandidates;
@@ -593,10 +599,12 @@ public abstract class DependencyResolver {
private void visitRule(Rule rule, ListMultimap<Attribute, LabelAndConfiguration> labelMap,
ListMultimap<Attribute, Dependency> outgoingEdges) {
- visitRule(rule, /*aspect=*/null, AspectParameters.EMPTY, labelMap, outgoingEdges);
+ visitRule(rule, /*aspect=*/ null, labelMap, outgoingEdges);
}
- private void visitRule(Rule rule, AspectDefinition aspect, AspectParameters aspectParameters,
+ private void visitRule(
+ Rule rule,
+ AspectWithParameters aspectWithParameters,
ListMultimap<Attribute, LabelAndConfiguration> labelMap,
ListMultimap<Attribute, Dependency> outgoingEdges) {
Preconditions.checkNotNull(labelMap);
@@ -637,8 +645,9 @@ public abstract class DependencyResolver {
} else {
config.evaluateTransition(rule, attribute, toTarget, transitionApplier);
}
- for (Dependency dependency : transitionApplier.getDependencies(label,
- requiredAspects(aspect, aspectParameters, attribute, toTarget, rule))) {
+ for (Dependency dependency :
+ transitionApplier.getDependencies(
+ label, requiredAspects(aspectWithParameters, attribute, toTarget, rule))) {
outgoingEdges.put(
entry.getKey(),
dependency);
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/config/BuildConfiguration.java b/src/main/java/com/google/devtools/build/lib/analysis/config/BuildConfiguration.java
index 90548f175c..a5f2c6bfbd 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/config/BuildConfiguration.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/config/BuildConfiguration.java
@@ -33,7 +33,6 @@ import com.google.common.collect.MutableClassToInstanceMap;
import com.google.devtools.build.lib.actions.ArtifactFactory;
import com.google.devtools.build.lib.actions.PackageRootResolver;
import com.google.devtools.build.lib.actions.Root;
-import com.google.devtools.build.lib.analysis.AspectWithParameters;
import com.google.devtools.build.lib.analysis.BlazeDirectories;
import com.google.devtools.build.lib.analysis.ConfiguredRuleClassProvider;
import com.google.devtools.build.lib.analysis.DependencyResolver;
@@ -44,6 +43,7 @@ import com.google.devtools.build.lib.cmdline.Label;
import com.google.devtools.build.lib.cmdline.LabelSyntaxException;
import com.google.devtools.build.lib.events.Event;
import com.google.devtools.build.lib.events.EventHandler;
+import com.google.devtools.build.lib.packages.AspectWithParameters;
import com.google.devtools.build.lib.packages.Attribute;
import com.google.devtools.build.lib.packages.Attribute.Configurator;
import com.google.devtools.build.lib.packages.Attribute.SplitTransition;
diff --git a/src/main/java/com/google/devtools/build/lib/ideinfo/AndroidStudioInfoAspect.java b/src/main/java/com/google/devtools/build/lib/ideinfo/AndroidStudioInfoAspect.java
index c01e10d0c6..44e818827a 100644
--- a/src/main/java/com/google/devtools/build/lib/ideinfo/AndroidStudioInfoAspect.java
+++ b/src/main/java/com/google/devtools/build/lib/ideinfo/AndroidStudioInfoAspect.java
@@ -91,7 +91,7 @@ public class AndroidStudioInfoAspect implements ConfiguredNativeAspectFactory {
};
@Override
- public AspectDefinition getDefinition() {
+ public AspectDefinition getDefinition(AspectParameters aspectParameters) {
return new AspectDefinition.Builder(NAME)
.attributeAspect("deps", AndroidStudioInfoAspect.class)
.attributeAspect("exports", AndroidStudioInfoAspect.class)
diff --git a/src/main/java/com/google/devtools/build/lib/packages/AspectClass.java b/src/main/java/com/google/devtools/build/lib/packages/AspectClass.java
index 834379cfe3..1a3d52d5c6 100644
--- a/src/main/java/com/google/devtools/build/lib/packages/AspectClass.java
+++ b/src/main/java/com/google/devtools/build/lib/packages/AspectClass.java
@@ -32,5 +32,5 @@ public interface AspectClass {
*/
String getName();
- AspectDefinition getDefinition();
+ AspectDefinition getDefinition(AspectParameters aspectParameters);
}
diff --git a/src/main/java/com/google/devtools/build/lib/packages/AspectDefinition.java b/src/main/java/com/google/devtools/build/lib/packages/AspectDefinition.java
index 7c5fa83ed3..9b5b5b98f7 100644
--- a/src/main/java/com/google/devtools/build/lib/packages/AspectDefinition.java
+++ b/src/main/java/com/google/devtools/build/lib/packages/AspectDefinition.java
@@ -132,27 +132,27 @@ public final class AspectDefinition {
}
RuleClass ruleClass = ((Rule) to).getRuleClassObject();
ImmutableSet<Class<?>> providers = ruleClass.getAdvertisedProviders();
- return visitAspectsIfRequired(from, attribute, toStringSet(providers));
+ return visitAspectsIfRequired((Rule) from, attribute, toStringSet(providers));
}
/**
* Returns the attribute -&gt; set of labels that are provided by aspects of attribute.
*/
public static ImmutableMultimap<Attribute, Label> visitAspectsIfRequired(
- Target from, Attribute attribute, Set<String> advertisedProviders) {
+ Rule from, Attribute attribute, Set<String> advertisedProviders) {
if (advertisedProviders.isEmpty()) {
return ImmutableMultimap.of();
}
LinkedHashMultimap<Attribute, Label> result = LinkedHashMultimap.create();
- for (AspectClass candidateClass : attribute.getAspects()) {
+ for (AspectWithParameters candidateClass : attribute.getAspectsWithParameters(from)) {
// Check if target satisfies condition for this aspect (has to provide all required
// TransitiveInfoProviders)
if (!advertisedProviders.containsAll(
candidateClass.getDefinition().getRequiredProviderNames())) {
continue;
}
- addAllAttributesOfAspect((Rule) from, result, candidateClass.getDefinition(), Rule.ALL_DEPS);
+ addAllAttributesOfAspect(from, result, candidateClass.getDefinition(), Rule.ALL_DEPS);
}
return ImmutableMultimap.copyOf(result);
}
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/AspectWithParameters.java b/src/main/java/com/google/devtools/build/lib/packages/AspectWithParameters.java
index 0d35c98e6a..6f47f9a18c 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/AspectWithParameters.java
+++ b/src/main/java/com/google/devtools/build/lib/packages/AspectWithParameters.java
@@ -11,18 +11,16 @@
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
-package com.google.devtools.build.lib.analysis;
+package com.google.devtools.build.lib.packages;
import com.google.common.base.Preconditions;
-import com.google.devtools.build.lib.packages.AspectClass;
-import com.google.devtools.build.lib.packages.AspectParameters;
import java.util.Objects;
/**
- * Wrapper around {@link ConfiguredAspectFactory} class and {@link AspectParameters}. Aspects are
+ * Wrapper around {@link AspectClass} class and {@link AspectParameters}. Aspects are
* created with help of aspect factory instances and parameters are used to configure them, so we
- * have to keep them together.
+ * have to keep them together.
*/
public final class AspectWithParameters {
// TODO(bazel-team): class objects are not really hashable or comparable for equality other than
@@ -32,14 +30,14 @@ public final class AspectWithParameters {
private final AspectParameters parameters;
public AspectWithParameters(AspectClass aspect, AspectParameters parameters) {
+ Preconditions.checkNotNull(aspect);
Preconditions.checkNotNull(parameters);
this.aspectClass = aspect;
this.parameters = parameters;
}
public AspectWithParameters(AspectClass aspect) {
- this.aspectClass = aspect;
- this.parameters = AspectParameters.EMPTY;
+ this(aspect, AspectParameters.EMPTY);
}
/**
@@ -78,4 +76,8 @@ public final class AspectWithParameters {
public String toString() {
return String.format("AspectWithParameters %s(%s)", aspectClass, parameters);
}
+
+ public AspectDefinition getDefinition() {
+ return aspectClass.getDefinition(parameters);
+ }
}
diff --git a/src/main/java/com/google/devtools/build/lib/packages/Attribute.java b/src/main/java/com/google/devtools/build/lib/packages/Attribute.java
index b501579c44..d11efff42b 100644
--- a/src/main/java/com/google/devtools/build/lib/packages/Attribute.java
+++ b/src/main/java/com/google/devtools/build/lib/packages/Attribute.java
@@ -20,7 +20,6 @@ import com.google.common.base.Preconditions;
import com.google.common.base.Predicate;
import com.google.common.base.Predicates;
import com.google.common.collect.ImmutableList;
-import com.google.common.collect.ImmutableMap;
import com.google.common.collect.ImmutableSet;
import com.google.common.collect.Iterables;
import com.google.common.collect.Sets;
@@ -1346,10 +1345,12 @@ public final class Attribute implements Comparable<Attribute> {
/**
* Returns set of pairs of aspect factories and corresponding aspect parameters.
*/
- public ImmutableMap<AspectClass, AspectParameters> getAspectsWithParameters(Rule rule) {
- ImmutableMap.Builder<AspectClass, AspectParameters> builder = ImmutableMap.builder();
+ public ImmutableList<AspectWithParameters> getAspectsWithParameters(Rule rule) {
+ ImmutableList.Builder<AspectWithParameters> builder = ImmutableList.builder();
for (RuleAspect aspect : aspects) {
- builder.put(aspect.getAspectFactory(), aspect.getParametersExtractor().apply(rule));
+ builder.add(
+ new AspectWithParameters(
+ aspect.getAspectFactory(), aspect.getParametersExtractor().apply(rule)));
}
return builder.build();
}
diff --git a/src/main/java/com/google/devtools/build/lib/packages/NativeAspectClass.java b/src/main/java/com/google/devtools/build/lib/packages/NativeAspectClass.java
index 7477ea0184..59bc6af3e1 100644
--- a/src/main/java/com/google/devtools/build/lib/packages/NativeAspectClass.java
+++ b/src/main/java/com/google/devtools/build/lib/packages/NativeAspectClass.java
@@ -34,8 +34,8 @@ public final class NativeAspectClass<T extends NativeAspectClass.NativeAspectFac
}
@Override
- public AspectDefinition getDefinition() {
- return newInstance().getDefinition();
+ public AspectDefinition getDefinition(AspectParameters aspectParameters) {
+ return newInstance().getDefinition(aspectParameters);
}
public T newInstance() {
@@ -66,6 +66,6 @@ public final class NativeAspectClass<T extends NativeAspectClass.NativeAspectFac
/**
* Returns the definition of the aspect.
*/
- AspectDefinition getDefinition();
+ AspectDefinition getDefinition(AspectParameters aspectParameters);
}
}
diff --git a/src/main/java/com/google/devtools/build/lib/packages/Rule.java b/src/main/java/com/google/devtools/build/lib/packages/Rule.java
index 9825e2df06..9d21980fdc 100644
--- a/src/main/java/com/google/devtools/build/lib/packages/Rule.java
+++ b/src/main/java/com/google/devtools/build/lib/packages/Rule.java
@@ -691,7 +691,7 @@ public final class Rule implements Target {
BinaryPredicate<Rule, Attribute> predicate) {
LinkedHashMultimap<Attribute, Label> labels = LinkedHashMultimap.create();
for (Attribute attribute : this.getAttributes()) {
- for (AspectClass candidateClass : attribute.getAspects()) {
+ for (AspectWithParameters candidateClass : attribute.getAspectsWithParameters(this)) {
AspectDefinition.addAllAttributesOfAspect(
Rule.this, labels, candidateClass.getDefinition(), predicate);
}
diff --git a/src/main/java/com/google/devtools/build/lib/query2/output/ConservativeAspectResolver.java b/src/main/java/com/google/devtools/build/lib/query2/output/ConservativeAspectResolver.java
index 7404126739..3f210f114e 100644
--- a/src/main/java/com/google/devtools/build/lib/query2/output/ConservativeAspectResolver.java
+++ b/src/main/java/com/google/devtools/build/lib/query2/output/ConservativeAspectResolver.java
@@ -18,8 +18,8 @@ import com.google.common.collect.ImmutableSet;
import com.google.common.collect.LinkedHashMultimap;
import com.google.common.collect.Multimap;
import com.google.devtools.build.lib.cmdline.Label;
-import com.google.devtools.build.lib.packages.AspectClass;
import com.google.devtools.build.lib.packages.AspectDefinition;
+import com.google.devtools.build.lib.packages.AspectWithParameters;
import com.google.devtools.build.lib.packages.Attribute;
import com.google.devtools.build.lib.packages.Rule;
import com.google.devtools.build.lib.packages.Target;
@@ -38,12 +38,13 @@ public class ConservativeAspectResolver implements AspectResolver {
if (!(target instanceof Rule)) {
return ImmutableMultimap.of();
}
+ Rule rule = (Rule) target;
Multimap<Attribute, Label> result = LinkedHashMultimap.create();
- for (Attribute attribute : ((Rule) target).getAttributes()) {
- for (AspectClass aspectFactory : attribute.getAspects()) {
+ for (Attribute attribute : rule.getAttributes()) {
+ for (AspectWithParameters aspectWithParameters : attribute.getAspectsWithParameters(rule)) {
AspectDefinition.addAllAttributesOfAspect(
- (Rule) target, result, aspectFactory.getDefinition(), Rule.ALL_DEPS);
+ rule, result, aspectWithParameters.getDefinition(), Rule.ALL_DEPS);
}
}
diff --git a/src/main/java/com/google/devtools/build/lib/query2/output/PreciseAspectResolver.java b/src/main/java/com/google/devtools/build/lib/query2/output/PreciseAspectResolver.java
index 011cd9c3d5..3067006d21 100644
--- a/src/main/java/com/google/devtools/build/lib/query2/output/PreciseAspectResolver.java
+++ b/src/main/java/com/google/devtools/build/lib/query2/output/PreciseAspectResolver.java
@@ -20,8 +20,8 @@ import com.google.devtools.build.lib.cmdline.Label;
import com.google.devtools.build.lib.cmdline.LabelSyntaxException;
import com.google.devtools.build.lib.cmdline.PackageIdentifier;
import com.google.devtools.build.lib.events.EventHandler;
-import com.google.devtools.build.lib.packages.AspectClass;
import com.google.devtools.build.lib.packages.AspectDefinition;
+import com.google.devtools.build.lib.packages.AspectWithParameters;
import com.google.devtools.build.lib.packages.Attribute;
import com.google.devtools.build.lib.packages.NoSuchPackageException;
import com.google.devtools.build.lib.packages.NoSuchThingException;
@@ -94,9 +94,10 @@ public class PreciseAspectResolver implements AspectResolver {
.getTransitions(
new BinaryPredicate<Rule, Attribute>() {
@Override
- public boolean apply(@Nullable Rule rule, @Nullable Attribute attribute) {
- for (AspectClass aspectClass : attribute.getAspects()) {
- if (!aspectClass.getDefinition().getAttributes().isEmpty()) {
+ public boolean apply(@Nullable Rule rule, Attribute attribute) {
+ for (AspectWithParameters aspectWithParameters :
+ attribute.getAspectsWithParameters(rule)) {
+ if (!aspectWithParameters.getDefinition().getAttributes().isEmpty()) {
return true;
}
}
diff --git a/src/main/java/com/google/devtools/build/lib/rules/SkylarkRuleClassFunctions.java b/src/main/java/com/google/devtools/build/lib/rules/SkylarkRuleClassFunctions.java
index b27fb45227..80185e0c2f 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/SkylarkRuleClassFunctions.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/SkylarkRuleClassFunctions.java
@@ -46,6 +46,7 @@ import com.google.devtools.build.lib.concurrent.ThreadSafety.Immutable;
import com.google.devtools.build.lib.events.Location;
import com.google.devtools.build.lib.packages.AspectClass;
import com.google.devtools.build.lib.packages.AspectDefinition;
+import com.google.devtools.build.lib.packages.AspectParameters;
import com.google.devtools.build.lib.packages.Attribute;
import com.google.devtools.build.lib.packages.Attribute.ConfigurationTransition;
import com.google.devtools.build.lib.packages.Attribute.LateBoundLabel;
@@ -666,7 +667,7 @@ public class SkylarkRuleClassFunctions {
}
@Override
- public AspectDefinition getDefinition() {
+ public AspectDefinition getDefinition(AspectParameters aspectParameters) {
return aspectDefinition;
}
diff --git a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidNeverlinkAspect.java b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidNeverlinkAspect.java
index e3e0856d28..b2a865b88a 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidNeverlinkAspect.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidNeverlinkAspect.java
@@ -77,7 +77,7 @@ public class AndroidNeverlinkAspect implements ConfiguredNativeAspectFactory {
}
@Override
- public AspectDefinition getDefinition() {
+ public AspectDefinition getDefinition(AspectParameters aspectParameters) {
AspectDefinition.Builder builder = new AspectDefinition.Builder("AndroidNeverlinkAspect");
for (String attribute : ATTRIBUTES) {
builder.attributeAspect(attribute, AndroidNeverlinkAspect.class);
diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/AbstractJ2ObjcProtoAspect.java b/src/main/java/com/google/devtools/build/lib/rules/objc/AbstractJ2ObjcProtoAspect.java
index 7d7ff0581c..b792bc2b97 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/objc/AbstractJ2ObjcProtoAspect.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/objc/AbstractJ2ObjcProtoAspect.java
@@ -52,7 +52,7 @@ import com.google.devtools.build.lib.vfs.PathFragment;
public abstract class AbstractJ2ObjcProtoAspect implements ConfiguredNativeAspectFactory {
public static final String NAME = "J2ObjcProtoAspect";
- public AspectDefinition getDefinition() {
+ public AspectDefinition getDefinition(AspectParameters aspectParameters) {
AspectDefinition.Builder builder = new AspectDefinition.Builder("J2ObjcProtoAspect")
.requireProvider(ProtoSourcesProvider.class)
.attributeAspect("deps", getClass())
diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/J2ObjcAspect.java b/src/main/java/com/google/devtools/build/lib/rules/objc/J2ObjcAspect.java
index 9fc55ccf67..410d6d4bf5 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/objc/J2ObjcAspect.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/objc/J2ObjcAspect.java
@@ -66,7 +66,7 @@ public class J2ObjcAspect implements ConfiguredNativeAspectFactory {
}
@Override
- public AspectDefinition getDefinition() {
+ public AspectDefinition getDefinition(AspectParameters aspectParameters) {
return addAttributeAspects(new AspectDefinition.Builder("J2ObjCAspect"))
.requireProvider(JavaSourceInfoProvider.class)
.requireProvider(JavaCompilationArgsProvider.class)
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/AspectFunction.java b/src/main/java/com/google/devtools/build/lib/skyframe/AspectFunction.java
index 13764f62dc..1ddd626164 100644
--- a/src/main/java/com/google/devtools/build/lib/skyframe/AspectFunction.java
+++ b/src/main/java/com/google/devtools/build/lib/skyframe/AspectFunction.java
@@ -181,8 +181,7 @@ public final class AspectFunction implements SkyFunction {
env,
resolver,
ctgValue,
- key.getAspect().getDefinition(),
- key.getParameters(),
+ key.getAspectWithParameters(),
configConditions,
ruleClassProvider,
view.getHostConfiguration(ctgValue.getConfiguration()),
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/AspectValue.java b/src/main/java/com/google/devtools/build/lib/skyframe/AspectValue.java
index 318b6683be..4b0d6785a5 100644
--- a/src/main/java/com/google/devtools/build/lib/skyframe/AspectValue.java
+++ b/src/main/java/com/google/devtools/build/lib/skyframe/AspectValue.java
@@ -17,7 +17,6 @@ package com.google.devtools.build.lib.skyframe;
import com.google.common.base.Objects;
import com.google.devtools.build.lib.actions.Action;
import com.google.devtools.build.lib.analysis.Aspect;
-import com.google.devtools.build.lib.analysis.AspectWithParameters;
import com.google.devtools.build.lib.analysis.config.BuildConfiguration;
import com.google.devtools.build.lib.cmdline.Label;
import com.google.devtools.build.lib.cmdline.PackageIdentifier;
@@ -25,6 +24,7 @@ import com.google.devtools.build.lib.collect.nestedset.NestedSet;
import com.google.devtools.build.lib.events.Location;
import com.google.devtools.build.lib.packages.AspectClass;
import com.google.devtools.build.lib.packages.AspectParameters;
+import com.google.devtools.build.lib.packages.AspectWithParameters;
import com.google.devtools.build.lib.packages.Package;
import com.google.devtools.build.skyframe.SkyFunctionName;
import com.google.devtools.build.skyframe.SkyKey;
@@ -32,7 +32,7 @@ import com.google.devtools.build.skyframe.SkyKey;
import javax.annotation.Nullable;
/**
- * An aspect in the context of the Skyframe graph.
+ * An aspectWithParameters in the context of the Skyframe graph.
*/
public final class AspectValue extends ActionLookupValue {
@@ -50,8 +50,7 @@ public final class AspectValue extends ActionLookupValue {
public static final class AspectKey extends AspectValueKey {
private final Label label;
private final BuildConfiguration configuration;
- private final AspectWithParameters aspect;
- private final String aspectName;
+ private final AspectWithParameters aspectWithParameters;
protected AspectKey(
Label label,
@@ -60,8 +59,7 @@ public final class AspectValue extends ActionLookupValue {
AspectParameters parameters) {
this.label = label;
this.configuration = configuration;
- this.aspectName = aspectClass.getName();
- this.aspect = new AspectWithParameters(aspectClass, parameters);
+ this.aspectWithParameters = new AspectWithParameters(aspectClass, parameters);
}
@Override
@@ -76,16 +74,20 @@ public final class AspectValue extends ActionLookupValue {
}
public AspectClass getAspect() {
- return aspect.getAspectClass();
+ return aspectWithParameters.getAspectClass();
}
@Nullable
public AspectParameters getParameters() {
- return aspect.getParameters();
+ return aspectWithParameters.getParameters();
+ }
+
+ public AspectWithParameters getAspectWithParameters() {
+ return aspectWithParameters;
}
public String getDescription() {
- return String.format("%s of %s", aspect.getAspectClass().getName(), getLabel());
+ return String.format("%s of %s", aspectWithParameters.getAspectClass().getName(), getLabel());
}
public BuildConfiguration getConfiguration() {
@@ -94,7 +96,7 @@ public final class AspectValue extends ActionLookupValue {
@Override
public int hashCode() {
- return Objects.hashCode(label, configuration, aspect);
+ return Objects.hashCode(label, configuration, aspectWithParameters);
}
@Override
@@ -110,19 +112,23 @@ public final class AspectValue extends ActionLookupValue {
AspectKey that = (AspectKey) other;
return Objects.equal(label, that.label)
&& Objects.equal(configuration, that.configuration)
- && Objects.equal(aspect, that.aspect);
+ && Objects.equal(aspectWithParameters, that.aspectWithParameters);
}
@Override
public String toString() {
- return label + "#" + aspect.getAspectClass().getName() + " "
- + (configuration == null ? "null" : configuration.checksum()) + " "
- + aspect.getParameters();
+ return label
+ + "#"
+ + aspectWithParameters.getAspectClass().getName()
+ + " "
+ + (configuration == null ? "null" : configuration.checksum())
+ + " "
+ + aspectWithParameters.getParameters();
}
}
/**
- * The key for a skylark aspect.
+ * The key for a skylark aspectWithParameters.
*/
public static class SkylarkAspectLoadingKey extends AspectValueKey {
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/ConfiguredTargetFunction.java b/src/main/java/com/google/devtools/build/lib/skyframe/ConfiguredTargetFunction.java
index 4493229290..d139ea6215 100644
--- a/src/main/java/com/google/devtools/build/lib/skyframe/ConfiguredTargetFunction.java
+++ b/src/main/java/com/google/devtools/build/lib/skyframe/ConfiguredTargetFunction.java
@@ -27,7 +27,6 @@ import com.google.devtools.build.lib.actions.Actions;
import com.google.devtools.build.lib.actions.Artifact;
import com.google.devtools.build.lib.actions.MutableActionGraph.ActionConflictException;
import com.google.devtools.build.lib.analysis.Aspect;
-import com.google.devtools.build.lib.analysis.AspectWithParameters;
import com.google.devtools.build.lib.analysis.CachingAnalysisEnvironment;
import com.google.devtools.build.lib.analysis.ConfiguredTarget;
import com.google.devtools.build.lib.analysis.DependencyResolver.Dependency;
@@ -45,9 +44,8 @@ import com.google.devtools.build.lib.cmdline.Label;
import com.google.devtools.build.lib.collect.nestedset.NestedSetBuilder;
import com.google.devtools.build.lib.events.Event;
import com.google.devtools.build.lib.events.StoredEventHandler;
-import com.google.devtools.build.lib.packages.AspectClass;
import com.google.devtools.build.lib.packages.AspectDefinition;
-import com.google.devtools.build.lib.packages.AspectParameters;
+import com.google.devtools.build.lib.packages.AspectWithParameters;
import com.google.devtools.build.lib.packages.Attribute;
import com.google.devtools.build.lib.packages.BuildFileContainsErrorsException;
import com.google.devtools.build.lib.packages.BuildType;
@@ -186,9 +184,16 @@ final class ConfiguredTargetFunction implements SkyFunction {
return null;
}
- ListMultimap<Attribute, ConfiguredTarget> depValueMap = computeDependencies(env, resolver,
- ctgValue, null, AspectParameters.EMPTY, configConditions, ruleClassProvider,
- view.getHostConfiguration(configuration), transitivePackages);
+ ListMultimap<Attribute, ConfiguredTarget> depValueMap =
+ computeDependencies(
+ env,
+ resolver,
+ ctgValue,
+ null,
+ configConditions,
+ ruleClassProvider,
+ view.getHostConfiguration(configuration),
+ transitivePackages);
ConfiguredTargetValue ans = createConfiguredTarget(
view, env, target, configuration, depValueMap, configConditions, transitivePackages);
return ans;
@@ -206,34 +211,34 @@ final class ConfiguredTargetFunction implements SkyFunction {
*
* <p>Returns null if Skyframe hasn't evaluated the required dependencies yet. In this case, the
* caller should also return null to Skyframe.
- *
- * @param env the Skyframe environment
+ * @param env the Skyframe environment
* @param resolver The dependency resolver
* @param ctgValue The label and the configuration of the node
- * @param aspectDefinition the aspect of the node (if null, the node is a configured target,
- * otherwise it's an aspect)
- * @param aspectParameters additional parameters for aspect construction
+ * @param aspectWithParameters
* @param configConditions the configuration conditions for evaluating the attributes of the node
* @param ruleClassProvider rule class provider for determining the right configuration fragments
* to apply to deps
* @param hostConfiguration the host configuration. There's a noticeable performance hit from
* instantiating this on demand for every dependency that wants it, so it's best to compute
* the host configuration as early as possible and pass this reference to all consumers
- * without involving Skyframe.
- * @return an attribute -&gt; direct dependency multimap
- */
+ * */
@Nullable
static ListMultimap<Attribute, ConfiguredTarget> computeDependencies(
- Environment env, SkyframeDependencyResolver resolver, TargetAndConfiguration ctgValue,
- AspectDefinition aspectDefinition, AspectParameters aspectParameters,
- Set<ConfigMatchingProvider> configConditions, RuleClassProvider ruleClassProvider,
- BuildConfiguration hostConfiguration, NestedSetBuilder<Package> transitivePackages)
+ Environment env,
+ SkyframeDependencyResolver resolver,
+ TargetAndConfiguration ctgValue,
+ AspectWithParameters aspectWithParameters,
+ Set<ConfigMatchingProvider> configConditions,
+ RuleClassProvider ruleClassProvider,
+ BuildConfiguration hostConfiguration,
+ NestedSetBuilder<Package> transitivePackages)
throws DependencyEvaluationException, AspectCreationException, InterruptedException {
// Create the map from attributes to list of (target, configuration) pairs.
ListMultimap<Attribute, Dependency> depValueNames;
try {
- depValueNames = resolver.dependentNodeMap(ctgValue, hostConfiguration, aspectDefinition,
- aspectParameters, configConditions);
+ depValueNames =
+ resolver.dependentNodeMap(
+ ctgValue, hostConfiguration, aspectWithParameters, configConditions);
} catch (EvalException e) {
env.getListener().handle(Event.error(e.getLocation(), e.getMessage()));
throw new DependencyEvaluationException(new ConfiguredValueCreationException(e.print()));
@@ -509,8 +514,7 @@ final class ConfiguredTargetFunction implements SkyFunction {
}
ConfiguredTarget depConfiguredTarget = configuredTargetMap.get(depKey);
for (AspectWithParameters depAspect : dep.getAspects()) {
- AspectClass depAspectClass = depAspect.getAspectClass();
- if (!aspectMatchesConfiguredTarget(depConfiguredTarget, depAspectClass)) {
+ if (!aspectMatchesConfiguredTarget(depConfiguredTarget, depAspect)) {
continue;
}
@@ -525,7 +529,7 @@ final class ConfiguredTargetFunction implements SkyFunction {
throw new AspectCreationException(
String.format(
"Evaluation of aspect %s on %s failed: %s",
- depAspectClass.getDefinition().getName(),
+ depAspect.getDefinition().getName(),
dep.getLabel(),
e.toString()));
}
@@ -550,7 +554,7 @@ final class ConfiguredTargetFunction implements SkyFunction {
}
private static boolean aspectMatchesConfiguredTarget(
- ConfiguredTarget dep, AspectClass aspectClass) {
+ ConfiguredTarget dep, AspectWithParameters aspectClass) {
AspectDefinition aspectDefinition = aspectClass.getDefinition();
for (Class<?> provider : aspectDefinition.getRequiredProviders()) {
if (dep.getProvider(provider.asSubclass(TransitiveInfoProvider.class)) == null) {
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/PostConfiguredTargetFunction.java b/src/main/java/com/google/devtools/build/lib/skyframe/PostConfiguredTargetFunction.java
index d227a43a1d..48444776b0 100644
--- a/src/main/java/com/google/devtools/build/lib/skyframe/PostConfiguredTargetFunction.java
+++ b/src/main/java/com/google/devtools/build/lib/skyframe/PostConfiguredTargetFunction.java
@@ -27,7 +27,6 @@ import com.google.devtools.build.lib.analysis.TargetAndConfiguration;
import com.google.devtools.build.lib.analysis.config.BuildConfiguration;
import com.google.devtools.build.lib.analysis.config.ConfigMatchingProvider;
import com.google.devtools.build.lib.cmdline.Label;
-import com.google.devtools.build.lib.packages.AspectParameters;
import com.google.devtools.build.lib.packages.Attribute;
import com.google.devtools.build.lib.packages.BuildType;
import com.google.devtools.build.lib.packages.RawAttributeMapper;
@@ -102,8 +101,9 @@ public class PostConfiguredTargetFunction implements SkyFunction {
try {
BuildConfiguration hostConfiguration =
buildViewProvider.getSkyframeBuildView().getHostConfiguration(ct.getConfiguration());
- deps = resolver.dependentNodeMap(ctgValue, hostConfiguration, /*aspect=*/null,
- AspectParameters.EMPTY, configConditions);
+ deps =
+ resolver.dependentNodeMap(
+ ctgValue, hostConfiguration, /*aspect=*/ null, configConditions);
if (ct.getConfiguration() != null && ct.getConfiguration().useDynamicConfigurations()) {
deps = ConfiguredTargetFunction.trimConfigurations(env, ctgValue, deps, hostConfiguration,
ruleClassProvider);
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/SkyframeExecutor.java b/src/main/java/com/google/devtools/build/lib/skyframe/SkyframeExecutor.java
index f13505b3d4..80d52b5f77 100644
--- a/src/main/java/com/google/devtools/build/lib/skyframe/SkyframeExecutor.java
+++ b/src/main/java/com/google/devtools/build/lib/skyframe/SkyframeExecutor.java
@@ -49,7 +49,6 @@ import com.google.devtools.build.lib.actions.PackageRootResolutionException;
import com.google.devtools.build.lib.actions.ResourceManager;
import com.google.devtools.build.lib.actions.Root;
import com.google.devtools.build.lib.analysis.Aspect;
-import com.google.devtools.build.lib.analysis.AspectWithParameters;
import com.google.devtools.build.lib.analysis.BlazeDirectories;
import com.google.devtools.build.lib.analysis.BuildView.Options;
import com.google.devtools.build.lib.analysis.ConfiguredRuleClassProvider;
@@ -75,6 +74,7 @@ import com.google.devtools.build.lib.concurrent.ThreadSafety;
import com.google.devtools.build.lib.concurrent.ThreadSafety.ThreadCompatible;
import com.google.devtools.build.lib.events.EventHandler;
import com.google.devtools.build.lib.events.Reporter;
+import com.google.devtools.build.lib.packages.AspectWithParameters;
import com.google.devtools.build.lib.packages.Attribute;
import com.google.devtools.build.lib.packages.BuildFileContainsErrorsException;
import com.google.devtools.build.lib.packages.NoSuchPackageException;
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 8623b78351..c3ef9485b9 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
@@ -174,7 +174,7 @@ abstract class TransitiveBaseTraversalFunction<TProcessedTargets> implements Sky
ValueOrException2<NoSuchPackageException, NoSuchTargetException> value =
labelDepMap.get(entry.getValue());
for (Label label :
- getAspectLabels(target, entry.getKey(), entry.getValue(), value, env)) {
+ getAspectLabels((Rule) target, entry.getKey(), entry.getValue(), value, env)) {
depKeys.add(getKey(label));
}
}
@@ -184,7 +184,7 @@ abstract class TransitiveBaseTraversalFunction<TProcessedTargets> implements Sky
/** Get the Aspect-related Label deps for the given edge. */
protected abstract Collection<Label> getAspectLabels(
- Target fromTarget,
+ Rule fromRule,
Attribute attr,
Label toLabel,
ValueOrException2<NoSuchPackageException, NoSuchTargetException> toVal,
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/TransitiveTargetFunction.java b/src/main/java/com/google/devtools/build/lib/skyframe/TransitiveTargetFunction.java
index bc39fe11e5..280e1a2277 100644
--- a/src/main/java/com/google/devtools/build/lib/skyframe/TransitiveTargetFunction.java
+++ b/src/main/java/com/google/devtools/build/lib/skyframe/TransitiveTargetFunction.java
@@ -150,7 +150,7 @@ public class TransitiveTargetFunction
return builder.build(errorLoadingTarget);
}
- protected Collection<Label> getAspectLabels(Target fromTarget, Attribute attr, Label toLabel,
+ protected Collection<Label> getAspectLabels(Rule fromRule, Attribute attr, Label toLabel,
ValueOrException2<NoSuchPackageException, NoSuchTargetException> toVal,
Environment env) {
SkyKey packageKey = PackageValue.key(toLabel.getPackageIdentifier());
@@ -167,7 +167,7 @@ public class TransitiveTargetFunction
return ImmutableList.of();
}
Target dependedTarget = pkgValue.getPackage().getTarget(toLabel.getName());
- return AspectDefinition.visitAspectsIfRequired(fromTarget, attr, dependedTarget).values();
+ return AspectDefinition.visitAspectsIfRequired(fromRule, attr, dependedTarget).values();
} catch (NoSuchThingException e) {
// Do nothing. This error was handled when we computed the corresponding
// TransitiveTargetValue.
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 abd6b5c598..66820ca47c 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
@@ -23,7 +23,7 @@ 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.NoSuchThingException;
-import com.google.devtools.build.lib.packages.Target;
+import com.google.devtools.build.lib.packages.Rule;
import com.google.devtools.build.lib.skyframe.TransitiveTraversalFunction.FirstErrorMessageAccumulator;
import com.google.devtools.build.skyframe.SkyKey;
import com.google.devtools.build.skyframe.SkyValue;
@@ -83,7 +83,7 @@ public class TransitiveTraversalFunction
}
}
- protected Collection<Label> getAspectLabels(Target fromTarget, Attribute attr, Label toLabel,
+ protected Collection<Label> getAspectLabels(Rule fromRule, Attribute attr, Label toLabel,
ValueOrException2<NoSuchPackageException, NoSuchTargetException> toVal, Environment env) {
try {
if (toVal == null) {
@@ -96,7 +96,7 @@ public class TransitiveTraversalFunction
// 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();
+ return AspectDefinition.visitAspectsIfRequired(fromRule, attr, providers).values();
} catch (NoSuchThingException e) {
// Do nothing. This error was handled when we computed the corresponding
// TransitiveTargetValue.