diff options
author | Irina Iancu <elenairina@google.com> | 2017-02-01 16:37:15 +0000 |
---|---|---|
committer | Yun Peng <pcloudy@google.com> | 2017-02-02 09:56:10 +0000 |
commit | c9c0f0ef8862052d9b6718c8ff8ae76947c70cc3 (patch) | |
tree | b92e3738bd85823bd12dfb5cd372b9e015d51dd0 | |
parent | 6712cac0b3922822e297a518d988d9c5675adb29 (diff) |
Change JavaProvider.getProvider to first look for the provider in the target
and if not found, look for it in SkylarkProviders -> JavaProvider.
--
PiperOrigin-RevId: 146247125
MOS_MIGRATED_REVID=146247125
3 files changed, 14 insertions, 16 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/rules/java/JavaCompilationArgs.java b/src/main/java/com/google/devtools/build/lib/rules/java/JavaCompilationArgs.java index 96f8586f9b..a92f22de7c 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/java/JavaCompilationArgs.java +++ b/src/main/java/com/google/devtools/build/lib/rules/java/JavaCompilationArgs.java @@ -151,12 +151,8 @@ public abstract class JavaCompilationArgs { */ public Builder addTransitiveTarget(TransitiveInfoCollection dep, boolean recursive, ClasspathType type) { - JavaCompilationArgsProvider provider = dep.getProvider(JavaCompilationArgsProvider.class); - if (provider == null) { - // Only look for the JavaProvider when there is no JavaCompilationArgsProvider, else - // it would encapsulate the same information. - provider = JavaProvider.getProvider(JavaCompilationArgsProvider.class, dep); - } + JavaCompilationArgsProvider provider = + JavaProvider.getProvider(JavaCompilationArgsProvider.class, dep); if (provider != null) { addTransitiveCompilationArgs(provider, recursive, type); return this; diff --git a/src/main/java/com/google/devtools/build/lib/rules/java/JavaCompilationHelper.java b/src/main/java/com/google/devtools/build/lib/rules/java/JavaCompilationHelper.java index de2ccf03d1..d3fcf21442 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/java/JavaCompilationHelper.java +++ b/src/main/java/com/google/devtools/build/lib/rules/java/JavaCompilationHelper.java @@ -663,14 +663,8 @@ public final class JavaCompilationHelper { if (isStrict() && classpathMode != JavaClasspathMode.OFF) { List<JavaCompilationArgsProvider> compilationArgsProviders = new LinkedList<>(); for (TransitiveInfoCollection dep : deps) { - // First check if there is a JavaCompilationArgsProvider. - JavaCompilationArgsProvider provider = dep.getProvider(JavaCompilationArgsProvider.class); - - if (provider == null) { - // A target can either have both JavaCompilationArgsProvider and JavaProvider that - // encapsulates the same information, or just one of them. - provider = JavaProvider.getProvider(JavaCompilationArgsProvider.class, dep); - } + JavaCompilationArgsProvider provider = + JavaProvider.getProvider(JavaCompilationArgsProvider.class, dep); if (provider != null) { compilationArgsProviders.add(provider); } diff --git a/src/main/java/com/google/devtools/build/lib/rules/java/JavaProvider.java b/src/main/java/com/google/devtools/build/lib/rules/java/JavaProvider.java index 51a5af2bc2..f63f453c77 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/java/JavaProvider.java +++ b/src/main/java/com/google/devtools/build/lib/rules/java/JavaProvider.java @@ -90,13 +90,21 @@ public final class JavaProvider extends SkylarkClassObject implements Transitive } /** - * Returns a provider of the specified class, fetched from the JavaProvider of the given target. - * JavaProvider can be found as a declared provider in SkylarkProviders. + * Returns a provider of the specified class, fetched from the specified target or, if not found, + * from the JavaProvider of the given target. JavaProvider can be found as a declared provider + * in SkylarkProviders. * Returns null if no such provider exists. + * + * <p>A target can either have both the specified provider and JavaProvider that encapsulates the + * same information, or just one of them.</p> */ @Nullable public static <T extends TransitiveInfoProvider> T getProvider( Class<T> providerClass, TransitiveInfoCollection target) { + T provider = target.getProvider(providerClass); + if (provider != null) { + return provider; + } SkylarkProviders skylarkProviders = target.getProvider(SkylarkProviders.class); if (skylarkProviders == null) { return null; |