diff options
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; |