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
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 71f6912..8437ab9 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 @@
       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()) {
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/ConfiguredTargetFunction.java b/src/main/java/com/google/devtools/build/lib/skyframe/ConfiguredTargetFunction.java
index c19e3c0..b0eaf3c 100644
--- a/src/main/java/com/google/devtools/build/lib/skyframe/ConfiguredTargetFunction.java
+++ b/src/main/java/com/google/devtools/build/lib/skyframe/ConfiguredTargetFunction.java
@@ -91,7 +91,6 @@
 import java.util.LinkedHashMap;
 import java.util.List;
 import java.util.Map;
-import java.util.Map.Entry;
 import java.util.Objects;
 import java.util.Set;
 import java.util.concurrent.Semaphore;
@@ -943,7 +942,7 @@
     return aspectKey;
   }
 
-  private static boolean aspectMatchesConfiguredTarget(final ConfiguredTarget dep, Aspect aspect) {
+  static boolean aspectMatchesConfiguredTarget(final ConfiguredTarget dep, Aspect aspect) {
     return aspect.getDefinition().getRequiredProviders().isSatisfiedBy(
         new Predicate<Class<?>>() {
           @Override