diff options
author | 2015-06-09 06:51:44 +0000 | |
---|---|---|
committer | 2015-06-09 09:57:22 +0000 | |
commit | 121a4001b69319f7d98c225894fa4742fa5c6cd1 (patch) | |
tree | ac5b7eef43487a16e82e84749594a770cc58cf4e /src/main/java/com/google | |
parent | 15f1f865a40e3433d57ac994365d3c5d6dc7469e (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.java | 10 |
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; } }); |