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/test/java/com/google/devtools/build/lib/analysis/AspectValueTest.java b/src/test/java/com/google/devtools/build/lib/analysis/AspectValueTest.java
index 47bfc54..15407b4 100644
--- a/src/test/java/com/google/devtools/build/lib/analysis/AspectValueTest.java
+++ b/src/test/java/com/google/devtools/build/lib/analysis/AspectValueTest.java
@@ -16,9 +16,11 @@
import com.google.common.testing.EqualsTester;
import com.google.devtools.build.lib.analysis.config.BuildConfiguration;
import com.google.devtools.build.lib.analysis.util.AnalysisTestCase;
-import com.google.devtools.build.lib.analysis.util.TestAspects;
+import com.google.devtools.build.lib.analysis.util.TestAspects.AttributeAspect;
+import com.google.devtools.build.lib.analysis.util.TestAspects.ExtraAttributeAspect;
import com.google.devtools.build.lib.cmdline.Label;
import com.google.devtools.build.lib.packages.AspectParameters;
+import com.google.devtools.build.lib.packages.NativeAspectClass;
import com.google.devtools.build.lib.skyframe.AspectValue;
import org.junit.After;
@@ -58,8 +60,8 @@
AspectParameters i2 = new AspectParameters.Builder()
.addAttribute("foo", "baz")
.build();
- Class<? extends ConfiguredAspectFactory> a1 = TestAspects.AttributeAspect.class;
- Class<? extends ConfiguredAspectFactory> a2 = TestAspects.ExtraAttributeAspect.class;
+ NativeAspectClass a1 = new NativeAspectClass(AttributeAspect.class);
+ NativeAspectClass a2 = new NativeAspectClass(ExtraAttributeAspect.class);
new EqualsTester()
.addEqualityGroup(AspectValue.key(l1, c1, a1, AspectParameters.EMPTY),
diff --git a/src/test/java/com/google/devtools/build/lib/analysis/DependencyResolverTest.java b/src/test/java/com/google/devtools/build/lib/analysis/DependencyResolverTest.java
index dca9b87..67889a8 100644
--- a/src/test/java/com/google/devtools/build/lib/analysis/DependencyResolverTest.java
+++ b/src/test/java/com/google/devtools/build/lib/analysis/DependencyResolverTest.java
@@ -30,6 +30,7 @@
import com.google.devtools.build.lib.packages.AspectFactory;
import com.google.devtools.build.lib.packages.AspectParameters;
import com.google.devtools.build.lib.packages.Attribute;
+import com.google.devtools.build.lib.packages.NativeAspectClass;
import com.google.devtools.build.lib.packages.NoSuchThingException;
import com.google.devtools.build.lib.packages.Target;
import com.google.devtools.build.lib.testutil.TestRuleClassProvider;
@@ -109,9 +110,10 @@
private ListMultimap<Attribute, Dependency> dependentNodeMap(
String targetName, Class<? extends ConfiguredAspectFactory> aspect) throws Exception {
- AspectDefinition aspectDefinition = aspect == null
- ? null
- : AspectFactory.Util.create(aspect).getDefinition();
+ AspectDefinition aspectDefinition =
+ aspect == null
+ ? null
+ : AspectFactory.Util.create(new NativeAspectClass(aspect)).getDefinition();
Target target = packageManager.getTarget(reporter, Label.parseAbsolute(targetName));
return dependencyResolver.dependentNodeMap(
new TargetAndConfiguration(target, getTargetConfiguration()),
@@ -155,7 +157,11 @@
"aspect(name='a', foo=[':b'])",
"aspect(name='b', foo=[])");
ListMultimap<Attribute, Dependency> map = dependentNodeMap("//a:a", null);
- assertDep(map, "foo", "//a:b", new AspectWithParameters(TestAspects.SimpleAspect.class));
+ assertDep(
+ map,
+ "foo",
+ "//a:b",
+ new AspectWithParameters(new NativeAspectClass(TestAspects.SimpleAspect.class)));
}
@Test
@@ -166,7 +172,11 @@
"simple(name='b', foo=[])");
ListMultimap<Attribute, Dependency> map =
dependentNodeMap("//a:a", TestAspects.AttributeAspect.class);
- assertDep(map, "foo", "//a:b", new AspectWithParameters(TestAspects.AttributeAspect.class));
+ assertDep(
+ map,
+ "foo",
+ "//a:b",
+ new AspectWithParameters(new NativeAspectClass(TestAspects.AttributeAspect.class)));
}
@Test
@@ -201,15 +211,18 @@
BuildConfiguration host = getHostConfiguration();
BuildConfiguration target = getTargetConfiguration();
- ImmutableSet<AspectWithParameters> twoAspects = ImmutableSet.of(
- new AspectWithParameters(TestAspects.SimpleAspect.class),
- new AspectWithParameters(TestAspects.AttributeAspect.class));
- ImmutableSet<AspectWithParameters> inverseAspects = ImmutableSet.of(
- new AspectWithParameters(TestAspects.AttributeAspect.class),
- new AspectWithParameters(TestAspects.SimpleAspect.class));
- ImmutableSet<AspectWithParameters> differentAspects = ImmutableSet.of(
- new AspectWithParameters(TestAspects.AttributeAspect.class),
- new AspectWithParameters(TestAspects.ErrorAspect.class));
+ ImmutableSet<AspectWithParameters> twoAspects =
+ ImmutableSet.of(
+ new AspectWithParameters(new NativeAspectClass(TestAspects.SimpleAspect.class)),
+ new AspectWithParameters(new NativeAspectClass(TestAspects.AttributeAspect.class)));
+ ImmutableSet<AspectWithParameters> inverseAspects =
+ ImmutableSet.of(
+ new AspectWithParameters(new NativeAspectClass(TestAspects.AttributeAspect.class)),
+ new AspectWithParameters(new NativeAspectClass(TestAspects.SimpleAspect.class)));
+ ImmutableSet<AspectWithParameters> differentAspects =
+ ImmutableSet.of(
+ new AspectWithParameters(new NativeAspectClass(TestAspects.AttributeAspect.class)),
+ new AspectWithParameters(new NativeAspectClass(TestAspects.ErrorAspect.class)));
new EqualsTester()
.addEqualityGroup(
diff --git a/src/test/java/com/google/devtools/build/lib/analysis/util/BuildViewTestCase.java b/src/test/java/com/google/devtools/build/lib/analysis/util/BuildViewTestCase.java
index 1ff708e..df14698 100644
--- a/src/test/java/com/google/devtools/build/lib/analysis/util/BuildViewTestCase.java
+++ b/src/test/java/com/google/devtools/build/lib/analysis/util/BuildViewTestCase.java
@@ -90,6 +90,7 @@
import com.google.devtools.build.lib.packages.Attribute.ConfigurationTransition;
import com.google.devtools.build.lib.packages.AttributeMap;
import com.google.devtools.build.lib.packages.ConstantRuleVisibility;
+import com.google.devtools.build.lib.packages.NativeAspectClass;
import com.google.devtools.build.lib.packages.NoSuchPackageException;
import com.google.devtools.build.lib.packages.NoSuchTargetException;
import com.google.devtools.build.lib.packages.OutputFile;
@@ -870,11 +871,16 @@
*/
protected Artifact getBinArtifact(String packageRelativePath, ConfiguredTarget owner,
Class<? extends ConfiguredAspectFactory> creatingAspectFactory) {
- return getPackageRelativeDerivedArtifact(packageRelativePath,
+ return getPackageRelativeDerivedArtifact(
+ packageRelativePath,
owner.getConfiguration().getBinDirectory(),
- (AspectValue.AspectKey) AspectValue.key(
- owner.getLabel(), owner.getConfiguration(), creatingAspectFactory,
- AspectParameters.EMPTY).argument());
+ (AspectValue.AspectKey)
+ AspectValue.key(
+ owner.getLabel(),
+ owner.getConfiguration(),
+ new NativeAspectClass(creatingAspectFactory),
+ AspectParameters.EMPTY)
+ .argument());
}
/**
@@ -930,11 +936,16 @@
*/
protected Artifact getGenfilesArtifact(String packageRelativePath, ConfiguredTarget owner,
Class<? extends ConfiguredAspectFactory> creatingAspectFactory) {
- return getPackageRelativeDerivedArtifact(packageRelativePath,
+ return getPackageRelativeDerivedArtifact(
+ packageRelativePath,
owner.getConfiguration().getGenfilesDirectory(),
- (AspectValue.AspectKey) AspectValue.key(
- owner.getLabel(), owner.getConfiguration(), creatingAspectFactory,
- AspectParameters.EMPTY).argument());
+ (AspectValue.AspectKey)
+ AspectValue.key(
+ owner.getLabel(),
+ owner.getConfiguration(),
+ new NativeAspectClass(creatingAspectFactory),
+ AspectParameters.EMPTY)
+ .argument());
}
/**