diff options
author | 2017-08-01 20:47:59 +0200 | |
---|---|---|
committer | 2017-08-02 10:40:02 +0200 | |
commit | 7df851524497afd7b1833418cc639d9c8f417451 (patch) | |
tree | 5a8f0c12749fdda9731bc9571c7e4f780ef09c5c /src/main/java/com/google/devtools/build/lib/skyframe | |
parent | 71238601b8ca147cfd4f9498e11d8517b25ac69a (diff) |
Automated rollback of commit c32e1b1efcd703b3780de47fba62974123593d71.
*** Reason for rollback ***
Breaks depot b/64250728
*** Original change description ***
Use RequiredProviders to validate rule prerequisites in RuleContext.
We now use a unified way to check provider requirements everywhere.
RELNOTES: None.
PiperOrigin-RevId: 163862067
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 | 18 |
1 files changed, 17 insertions, 1 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 1b783b9926..aa960a87d4 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 @@ -15,6 +15,7 @@ package com.google.devtools.build.lib.skyframe; import com.google.common.annotations.VisibleForTesting; import com.google.common.base.Joiner; +import com.google.common.base.Predicate; import com.google.common.base.Supplier; import com.google.common.base.Verify; import com.google.common.base.VerifyException; @@ -42,6 +43,7 @@ import com.google.devtools.build.lib.analysis.MergedConfiguredTarget; import com.google.devtools.build.lib.analysis.MergedConfiguredTarget.DuplicateException; import com.google.devtools.build.lib.analysis.TargetAndConfiguration; import com.google.devtools.build.lib.analysis.ToolchainContext; +import com.google.devtools.build.lib.analysis.TransitiveInfoProvider; import com.google.devtools.build.lib.analysis.config.BuildConfiguration; import com.google.devtools.build.lib.analysis.config.BuildOptions; import com.google.devtools.build.lib.analysis.config.ConfigMatchingProvider; @@ -65,6 +67,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; @@ -985,7 +988,20 @@ public final class ConfiguredTargetFunction implements SkyFunction { if (!aspect.getDefinition().applyToFiles() && !(dep.getTarget() instanceof Rule)) { return false; } - return dep.satisfies(aspect.getDefinition().getRequiredProviders()); + 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; + } + } + ); } /** |