From 6cd98976031448f4d75d084493a253dbd97b9dab Mon Sep 17 00:00:00 2001 From: Dmitry Lomov Date: Wed, 1 Mar 2017 15:44:00 +0000 Subject: 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 --- .../build/lib/skyframe/AspectFunction.java | 26 +++++++++++++--------- 1 file changed, 15 insertions(+), 11 deletions(-) (limited to 'src/main/java/com/google/devtools/build/lib/skyframe/AspectFunction.java') 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()) { -- cgit v1.2.3