aboutsummaryrefslogtreecommitdiffhomepage
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/main/java/com/google/devtools/build/lib/analysis/BuildView.java10
-rw-r--r--src/test/java/com/google/devtools/build/lib/skylark/SkylarkAspectsTest.java16
2 files changed, 24 insertions, 2 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 7b42b376b5..2f5f70f01d 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
@@ -449,7 +449,10 @@ public class BuildView {
PathFragment bzlFile = new PathFragment("/" + aspect.substring(0, delimiterPosition));
String skylarkFunctionName = aspect.substring(delimiterPosition + 1);
- for (ConfiguredTargetKey targetSpec : topLevelCtKeys) {
+ for (TargetAndConfiguration targetSpec : topLevelTargetsWithConfigs) {
+ if (!(targetSpec.getTarget() instanceof Rule)) {
+ continue;
+ }
aspectKeys.add(
AspectValue.createSkylarkAspectKey(
targetSpec.getLabel(),
@@ -464,7 +467,10 @@ public class BuildView {
final NativeAspectClass aspectFactoryClass =
ruleClassProvider.getNativeAspectClassMap().get(aspect);
if (aspectFactoryClass != null) {
- for (ConfiguredTargetKey targetSpec : topLevelCtKeys) {
+ for (TargetAndConfiguration targetSpec : topLevelTargetsWithConfigs) {
+ if (!(targetSpec.getTarget() instanceof Rule)) {
+ continue;
+ }
aspectKeys.add(
AspectValue.createAspectKey(
targetSpec.getLabel(),
diff --git a/src/test/java/com/google/devtools/build/lib/skylark/SkylarkAspectsTest.java b/src/test/java/com/google/devtools/build/lib/skylark/SkylarkAspectsTest.java
index 8677771dd7..97368f8ed4 100644
--- a/src/test/java/com/google/devtools/build/lib/skylark/SkylarkAspectsTest.java
+++ b/src/test/java/com/google/devtools/build/lib/skylark/SkylarkAspectsTest.java
@@ -1031,6 +1031,22 @@ public class SkylarkAspectsTest extends AnalysisTestCase {
}
}
+ @Test
+ public void toplevelAspectOnFile() throws Exception {
+ scratch.file(
+ "test/aspect.bzl",
+ "def _impl(target, ctx):",
+ " print('This aspect does nothing')",
+ " return struct()",
+ "MyAspect = aspect(implementation=_impl)");
+ scratch.file("test/BUILD", "exports_files(['file.txt'])");
+ scratch.file("test/file.txt", "");
+ AnalysisResult analysisResult =
+ update(ImmutableList.of("test/aspect.bzl%MyAspect"), "//test:file.txt");
+ assertThat(analysisResult.hasError()).isFalse();
+ assertThat(analysisResult.getAspects()).isEmpty();
+ }
+
@RunWith(JUnit4.class)
public static final class WithKeepGoing extends SkylarkAspectsTest {