aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build/lib/skyframe/AspectFunction.java
diff options
context:
space:
mode:
authorGravatar Dmitry Lomov <dslomov@google.com>2017-03-01 15:44:00 +0000
committerGravatar Yue Gan <yueg@google.com>2017-03-01 16:16:42 +0000
commit6cd98976031448f4d75d084493a253dbd97b9dab (patch)
tree94912dc1323207f7f6803b5c0b9e516f526c5a64 /src/main/java/com/google/devtools/build/lib/skyframe/AspectFunction.java
parent01120026dc313ee7ad9ea95069a29252eb19173b (diff)
Do not execute aspect implementation if target advertizes but fails to provide a provider.
Previously we always executed the function, but didn't add the aspect to the deps. -- PiperOrigin-RevId: 148887089 MOS_MIGRATED_REVID=148887089
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/skyframe/AspectFunction.java')
-rw-r--r--src/main/java/com/google/devtools/build/lib/skyframe/AspectFunction.java26
1 files changed, 15 insertions, 11 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/AspectFunction.java b/src/main/java/com/google/devtools/build/lib/skyframe/AspectFunction.java
index 71f691255b..8437ab91bf 100644
--- a/src/main/java/com/google/devtools/build/lib/skyframe/AspectFunction.java
+++ b/src/main/java/com/google/devtools/build/lib/skyframe/AspectFunction.java
@@ -427,17 +427,21 @@ public final class AspectFunction implements SkyFunction {
return null;
}
- ConfiguredAspect configuredAspect =
- view.getConfiguredTargetFactory().createAspect(
- analysisEnvironment,
- associatedTarget,
- aspectPath,
- aspectFactory,
- aspect,
- directDeps,
- configConditions,
- aspectConfiguration,
- view.getHostConfiguration(aspectConfiguration));
+ ConfiguredAspect configuredAspect;
+ if (ConfiguredTargetFunction.aspectMatchesConfiguredTarget(associatedTarget, aspect)) {
+ configuredAspect = view.getConfiguredTargetFactory().createAspect(
+ analysisEnvironment,
+ associatedTarget,
+ aspectPath,
+ aspectFactory,
+ aspect,
+ directDeps,
+ configConditions,
+ aspectConfiguration,
+ view.getHostConfiguration(aspectConfiguration));
+ } else {
+ configuredAspect = ConfiguredAspect.forNonapplicableTarget(aspect.getDescriptor());
+ }
events.replayOn(env.getListener());
if (events.hasErrors()) {