Introduce an AspectClass: a representation of a class of aspects.
For native aspects, AspectClass is a facade for Class<AspectFactory<...>>.
--
MOS_MIGRATED_REVID=105986390
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 884d5db..336056f 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
@@ -19,12 +19,12 @@
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.ConfiguredAspectFactory;
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;
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.Package;
import com.google.devtools.build.skyframe.SkyFunctionName;
@@ -72,15 +72,15 @@
private NativeAspectKey(
Label label,
BuildConfiguration configuration,
- Class<? extends ConfiguredAspectFactory> aspectFactory,
+ AspectClass aspectClass ,
AspectParameters parameters) {
super(label, configuration);
Preconditions.checkNotNull(parameters);
- this.aspect = new AspectWithParameters(aspectFactory, parameters);
+ this.aspect = new AspectWithParameters(aspectClass, parameters);
}
- public Class<? extends ConfiguredAspectFactory> getAspect() {
- return aspect.getAspectFactory();
+ public AspectClass getAspect() {
+ return aspect.getAspectClass();
}
@Override
@@ -91,7 +91,7 @@
@Override
public String getDescription() {
- return String.format("%s of %s", aspect.getAspectFactory().getName(), getLabel());
+ return String.format("%s of %s", aspect.getAspectClass().getName(), getLabel());
}
@Override
@@ -122,7 +122,7 @@
@Override
public String toString() {
- return label + "#" + aspect.getAspectFactory().getSimpleName() + " "
+ return label + "#" + aspect.getAspectClass().getName() + " "
+ (configuration == null ? "null" : configuration.checksum()) + " "
+ aspect.getParameters();
}
@@ -209,8 +209,10 @@
return transitivePackages;
}
- public static SkyKey key(Label label, BuildConfiguration configuration,
- Class<? extends ConfiguredAspectFactory> aspectFactory,
+ public static SkyKey key(
+ Label label,
+ BuildConfiguration configuration,
+ AspectClass aspectFactory,
AspectParameters additionalConfiguration) {
return new SkyKey(
SkyFunctions.NATIVE_ASPECT,
@@ -222,9 +224,7 @@
}
public static NativeAspectKey createAspectKey(
- Label label,
- BuildConfiguration configuration,
- Class<? extends ConfiguredAspectFactory> aspectFactory) {
+ Label label, BuildConfiguration configuration, AspectClass aspectFactory) {
return new NativeAspectKey(label, configuration, aspectFactory, AspectParameters.EMPTY);
}
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 addf514..237feea 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
@@ -29,7 +29,6 @@
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.ConfiguredAspectFactory;
import com.google.devtools.build.lib.analysis.ConfiguredTarget;
import com.google.devtools.build.lib.analysis.DependencyResolver.Dependency;
import com.google.devtools.build.lib.analysis.LabelAndConfiguration;
@@ -46,6 +45,7 @@
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.AspectFactory;
import com.google.devtools.build.lib.packages.AspectParameters;
@@ -510,7 +510,7 @@
}
ConfiguredTarget depConfiguredTarget = configuredTargetMap.get(depKey);
for (AspectWithParameters depAspect : dep.getAspects()) {
- if (!aspectMatchesConfiguredTarget(depConfiguredTarget, depAspect.getAspectFactory())) {
+ if (!aspectMatchesConfiguredTarget(depConfiguredTarget, depAspect.getAspectClass())) {
continue;
}
@@ -523,7 +523,7 @@
throw new IllegalStateException(e);
} catch (NoSuchThingException e) {
AspectFactory<?, ?, ?> depAspectFactory =
- AspectFactory.Util.create(depAspect.getAspectFactory());
+ AspectFactory.Util.create(depAspect.getAspectClass());
throw new AspectCreationException(
String.format("Evaluation of aspect %s on %s failed: %s",
depAspectFactory.getDefinition().getName(), dep.getLabel(), e.toString()));
@@ -544,13 +544,13 @@
AspectWithParameters depAspect) {
return AspectValue.key(label,
buildConfiguration,
- depAspect.getAspectFactory(),
+ depAspect.getAspectClass(),
depAspect.getParameters());
}
- private static boolean aspectMatchesConfiguredTarget(ConfiguredTarget dep,
- Class<? extends ConfiguredAspectFactory> aspectFactory) {
- AspectDefinition aspectDefinition = AspectFactory.Util.create(aspectFactory).getDefinition();
+ private static boolean aspectMatchesConfiguredTarget(
+ ConfiguredTarget dep, AspectClass aspectClass) {
+ AspectDefinition aspectDefinition = AspectFactory.Util.create(aspectClass).getDefinition();
for (Class<?> provider : aspectDefinition.getRequiredProviders()) {
if (dep.getProvider(provider.asSubclass(TransitiveInfoProvider.class)) == null) {
return false;