aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google
diff options
context:
space:
mode:
authorGravatar Lukacs Berki <lberki@google.com>2015-06-09 06:51:44 +0000
committerGravatar Damien Martin-Guillerez <dmarting@google.com>2015-06-09 09:57:22 +0000
commit121a4001b69319f7d98c225894fa4742fa5c6cd1 (patch)
treeac5b7eef43487a16e82e84749594a770cc58cf4e /src/main/java/com/google
parent15f1f865a40e3433d57ac994365d3c5d6dc7469e (diff)
Optimization: do not trigger the loading of directly dependent packages on query for aspects that do not have implicit attributes.
-- MOS_MIGRATED_REVID=95507900
Diffstat (limited to 'src/main/java/com/google')
-rw-r--r--src/main/java/com/google/devtools/build/lib/query2/output/AspectResolver.java10
1 files changed, 9 insertions, 1 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/query2/output/AspectResolver.java b/src/main/java/com/google/devtools/build/lib/query2/output/AspectResolver.java
index 7a560e886a..6acdc9ea8d 100644
--- a/src/main/java/com/google/devtools/build/lib/query2/output/AspectResolver.java
+++ b/src/main/java/com/google/devtools/build/lib/query2/output/AspectResolver.java
@@ -17,6 +17,7 @@ import com.google.common.collect.Multimap;
import com.google.common.collect.Multimaps;
import com.google.devtools.build.lib.events.EventHandler;
import com.google.devtools.build.lib.packages.AspectDefinition;
+import com.google.devtools.build.lib.packages.AspectFactory;
import com.google.devtools.build.lib.packages.Attribute;
import com.google.devtools.build.lib.packages.NoSuchPackageException;
import com.google.devtools.build.lib.packages.NoSuchThingException;
@@ -128,7 +129,14 @@ public class AspectResolver {
new BinaryPredicate<Rule, Attribute>() {
@Override
public boolean apply(@Nullable Rule rule, @Nullable Attribute attribute) {
- return !attribute.getAspects().isEmpty();
+ for (Class<? extends AspectFactory<?, ?, ?>> aspectFactory : attribute.getAspects()) {
+ if (!AspectFactory.Util.create(aspectFactory).getDefinition()
+ .getAttributes().isEmpty()) {
+ return true;
+ }
+ }
+
+ return false;
}
});