Native aspects can opt-in to apply to files.
Only works for top-level targets.
RELNOTES: None.
PiperOrigin-RevId: 154176914
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 5d56cf3..5a45dc6 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
@@ -526,9 +526,12 @@
} else {
final NativeAspectClass aspectFactoryClass =
ruleClassProvider.getNativeAspectClassMap().get(aspect);
+
if (aspectFactoryClass != null) {
+ AspectParameters aspectParameters = AspectParameters.EMPTY;
+ boolean applyToFiles = aspectFactoryClass.getDefinition(aspectParameters).applyToFiles();
for (TargetAndConfiguration targetSpec : topLevelTargetsWithConfigs) {
- if (!(targetSpec.getTarget() instanceof Rule)) {
+ if (!applyToFiles && !(targetSpec.getTarget() instanceof Rule)) {
continue;
}
// For invoking top-level aspects, use the top-level configuration for both the
@@ -538,7 +541,7 @@
AspectValue.createAspectKey(
targetSpec.getLabel(),
configuration,
- new AspectDescriptor(aspectFactoryClass, AspectParameters.EMPTY),
+ new AspectDescriptor(aspectFactoryClass, aspectParameters),
configuration
));
}