aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build/lib/analysis/AspectResolver.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/analysis/AspectResolver.java')
-rw-r--r--src/main/java/com/google/devtools/build/lib/analysis/AspectResolver.java28
1 files changed, 17 insertions, 11 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/AspectResolver.java b/src/main/java/com/google/devtools/build/lib/analysis/AspectResolver.java
index 35eeae8959..79baad0f98 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/AspectResolver.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/AspectResolver.java
@@ -25,6 +25,7 @@ import com.google.devtools.build.lib.packages.Package;
import com.google.devtools.build.lib.packages.Rule;
import com.google.devtools.build.lib.skyframe.AspectFunction;
import com.google.devtools.build.lib.skyframe.AspectValue;
+import com.google.devtools.build.lib.skyframe.ConfiguredTargetAndTarget;
import com.google.devtools.build.lib.skyframe.ConfiguredTargetValue;
import com.google.devtools.build.lib.util.OrderedSetMultimap;
import com.google.devtools.build.skyframe.SkyFunction;
@@ -49,7 +50,7 @@ public final class AspectResolver {
@Nullable
public static OrderedSetMultimap<Dependency, ConfiguredAspect> resolveAspectDependencies(
SkyFunction.Environment env,
- Map<SkyKey, ConfiguredTarget> configuredTargetMap,
+ Map<SkyKey, ConfiguredTargetAndTarget> configuredTargetMap,
Iterable<Dependency> deps,
@Nullable NestedSetBuilder<Package> transitivePackages)
throws AspectFunction.AspectCreationException, InterruptedException {
@@ -89,8 +90,9 @@ public final class AspectResolver {
}
// Validate that aspect is applicable to "bare" configured target.
- ConfiguredTarget associatedTarget = configuredTargetMap
- .get(ConfiguredTargetValue.key(dep.getLabel(), dep.getConfiguration()));
+ ConfiguredTargetAndTarget associatedTarget =
+ configuredTargetMap.get(
+ ConfiguredTargetValue.key(dep.getLabel(), dep.getConfiguration()));
if (!aspectMatchesConfiguredTarget(associatedTarget, aspectValue.getAspect())) {
continue;
}
@@ -113,20 +115,23 @@ public final class AspectResolver {
* combinations of aspects for a particular configured target, so it would result in a
* combinatorial explosion of Skyframe nodes.
*/
- public static OrderedSetMultimap<Attribute, ConfiguredTarget> mergeAspects(
+ public static OrderedSetMultimap<Attribute, ConfiguredTargetAndTarget> mergeAspects(
OrderedSetMultimap<Attribute, Dependency> depValueNames,
- Map<SkyKey, ConfiguredTarget> depConfiguredTargetMap,
+ Map<SkyKey, ConfiguredTargetAndTarget> depConfiguredTargetMap,
OrderedSetMultimap<Dependency, ConfiguredAspect> depAspectMap)
throws MergedConfiguredTarget.DuplicateException {
- OrderedSetMultimap<Attribute, ConfiguredTarget> result = OrderedSetMultimap.create();
+ OrderedSetMultimap<Attribute, ConfiguredTargetAndTarget> result = OrderedSetMultimap.create();
for (Map.Entry<Attribute, Dependency> entry : depValueNames.entries()) {
Dependency dep = entry.getValue();
SkyKey depKey = ConfiguredTargetValue.key(dep.getLabel(), dep.getConfiguration());
- ConfiguredTarget depConfiguredTarget = depConfiguredTargetMap.get(depKey);
+ ConfiguredTargetAndTarget depConfiguredTarget = depConfiguredTargetMap.get(depKey);
- result.put(entry.getKey(),
- MergedConfiguredTarget.of(depConfiguredTarget, depAspectMap.get(dep)));
+ result.put(
+ entry.getKey(),
+ depConfiguredTarget.fromConfiguredTarget(
+ MergedConfiguredTarget.of(
+ depConfiguredTarget.getConfiguredTarget(), depAspectMap.get(dep))));
}
return result;
@@ -160,7 +165,8 @@ public final class AspectResolver {
return aspectKey;
}
- public static boolean aspectMatchesConfiguredTarget(final ConfiguredTarget dep, Aspect aspect) {
+ public static boolean aspectMatchesConfiguredTarget(
+ ConfiguredTargetAndTarget dep, Aspect aspect) {
if (!aspect.getDefinition().applyToFiles() && !(dep.getTarget() instanceof Rule)) {
return false;
}
@@ -168,6 +174,6 @@ public final class AspectResolver {
// even aspects that 'apply to files' cannot apply to input files.
return false;
}
- return dep.satisfies(aspect.getDefinition().getRequiredProviders());
+ return dep.getConfiguredTarget().satisfies(aspect.getDefinition().getRequiredProviders());
}
}