diff options
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/skyframe')
-rw-r--r-- | src/main/java/com/google/devtools/build/lib/skyframe/ConfiguredTargetFunction.java | 35 |
1 files changed, 16 insertions, 19 deletions
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 134cea24a8..e481dbd1d9 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 @@ -16,11 +16,11 @@ package com.google.devtools.build.lib.skyframe; import com.google.common.annotations.VisibleForTesting; import com.google.common.base.Function; import com.google.common.base.Joiner; +import com.google.common.base.Predicate; import com.google.common.base.Verify; import com.google.common.base.VerifyException; import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableMap; -import com.google.common.collect.ImmutableSet; import com.google.common.collect.Iterables; import com.google.common.collect.LinkedHashMultimap; import com.google.common.collect.LinkedListMultimap; @@ -54,7 +54,6 @@ import com.google.devtools.build.lib.concurrent.ThreadSafety.Immutable; import com.google.devtools.build.lib.events.Event; import com.google.devtools.build.lib.events.StoredEventHandler; import com.google.devtools.build.lib.packages.Aspect; -import com.google.devtools.build.lib.packages.AspectDefinition; import com.google.devtools.build.lib.packages.AspectDescriptor; import com.google.devtools.build.lib.packages.Attribute; import com.google.devtools.build.lib.packages.BuildType; @@ -64,6 +63,7 @@ import com.google.devtools.build.lib.packages.Package; import com.google.devtools.build.lib.packages.RawAttributeMapper; import com.google.devtools.build.lib.packages.Rule; import com.google.devtools.build.lib.packages.RuleClassProvider; +import com.google.devtools.build.lib.packages.SkylarkProviderIdentifier; import com.google.devtools.build.lib.packages.Target; import com.google.devtools.build.lib.packages.TargetUtils; import com.google.devtools.build.lib.skyframe.AspectFunction.AspectCreationException; @@ -916,24 +916,21 @@ final class ConfiguredTargetFunction implements SkyFunction { return key; } - private static boolean aspectMatchesConfiguredTarget(ConfiguredTarget dep, Aspect aspect) { - AspectDefinition aspectDefinition = aspect.getDefinition(); - ImmutableList<ImmutableSet<Class<?>>> providersList = aspectDefinition.getRequiredProviders(); - - for (ImmutableSet<Class<?>> providers : providersList) { - boolean matched = true; - for (Class<?> provider : providers) { - if (dep.getProvider(provider.asSubclass(TransitiveInfoProvider.class)) == null) { - matched = false; - break; + private static boolean aspectMatchesConfiguredTarget(final ConfiguredTarget dep, Aspect aspect) { + return aspect.getDefinition().getRequiredProviders().isSatisfiedBy( + new Predicate<Class<?>>() { + @Override + public boolean apply(Class<?> provider) { + return dep.getProvider(provider.asSubclass(TransitiveInfoProvider.class)) != null; + } + }, + new Predicate<SkylarkProviderIdentifier>() { + @Override + public boolean apply(SkylarkProviderIdentifier skylarkProviderIdentifier) { + return dep.get(skylarkProviderIdentifier) != null; + } } - } - - if (matched) { - return true; - } - } - return false; + ); } /** |