Skip to content

Commit

Permalink
Stop returning JavaSourceJarsProvider from java_library
Browse files Browse the repository at this point in the history
since it's already returned via JavaProvider.

PiperOrigin-RevId: 151550286
  • Loading branch information
iirina authored and philwo committed Mar 29, 2017
1 parent a4b37d0 commit ceb0d88
Show file tree
Hide file tree
Showing 5 changed files with 21 additions and 15 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -391,16 +391,9 @@ public NestedSet<Artifact> collectTransitiveSourceJars(Iterable<Artifact> target
NestedSetBuilder<Artifact> builder = NestedSetBuilder.<Artifact>stableOrder()
.addAll(targetSrcJars);

for (TransitiveInfoCollection dep : getDependencies()) {
JavaSourceJarsProvider sourceJarsProvider = dep.getProvider(JavaSourceJarsProvider.class);
if (sourceJarsProvider == null) {
// A target can either have both JavaSourceJarsProvider and JavaProvider that
// encapsulates the same information, or just one of them.
sourceJarsProvider = JavaProvider.getProvider(JavaSourceJarsProvider.class, dep);
}
if (sourceJarsProvider != null) {
builder.addTransitive(sourceJarsProvider.getTransitiveSourceJars());
}
for (JavaSourceJarsProvider sourceJarsProvider : JavaProvider.getProvidersFromListOfTargets(
JavaSourceJarsProvider.class, getDependencies())) {
builder.addTransitive(sourceJarsProvider.getTransitiveSourceJars());
}

return builder.build();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -191,8 +191,8 @@ private NestedSet<Artifact> collectTransitiveJavaSourceJars(RuleContext ruleCont
if (srcJar != null) {
transitiveJavaSourceJarBuilder.add(srcJar);
}
for (JavaSourceJarsProvider other :
ruleContext.getPrerequisites("exports", Mode.TARGET, JavaSourceJarsProvider.class)) {
for (JavaSourceJarsProvider other : JavaProvider.getProvidersFromListOfTargets(
JavaSourceJarsProvider.class, ruleContext.getPrerequisites("exports", Mode.TARGET))) {
transitiveJavaSourceJarBuilder.addTransitive(other.getTransitiveSourceJars());
}
return transitiveJavaSourceJarBuilder.build();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -227,7 +227,6 @@ protected void collect(CcLinkParams.Builder builder, boolean linkingStatically,
.add(
JavaSourceInfoProvider.class,
JavaSourceInfoProvider.fromJavaTargetAttributes(attributes, semantics))
.add(JavaSourceJarsProvider.class, sourceJarsProvider)
// TODO(bazel-team): this should only happen for java_plugin
.add(JavaPluginInfoProvider.class, JavaCommon.getTransitivePlugins(ruleContext))
.add(ProguardSpecProvider.class, new ProguardSpecProvider(proguardSpecs))
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@
import com.google.devtools.build.lib.packages.NativeClassObjectConstructor;
import com.google.devtools.build.lib.packages.SkylarkClassObject;
import com.google.devtools.build.lib.syntax.SkylarkNestedSet;
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;
import javax.annotation.Nullable;
Expand Down Expand Up @@ -104,7 +105,7 @@ public static JavaProvider merge(List<JavaProvider> providers) {
* JavaCompilationArgsProvider.
*/
public static <C extends TransitiveInfoProvider> List<C> fetchProvidersFromList(
List<JavaProvider> javaProviders, Class<C> providersClass) {
Iterable<JavaProvider> javaProviders, Class<C> providersClass) {
List<C> fetchedProviders = new LinkedList<>();
for (JavaProvider javaProvider : javaProviders) {
C provider = javaProvider.getProvider(providersClass);
Expand Down Expand Up @@ -143,6 +144,18 @@ public static <T extends TransitiveInfoProvider> T getProvider(
return javaProvider.getProvider(providerClass);
}

public static <T extends TransitiveInfoProvider> List<T> getProvidersFromListOfTargets(
Class<T> providerClass, Iterable<? extends TransitiveInfoCollection> targets) {
List<T> providersList = new ArrayList<>();
for (TransitiveInfoCollection target : targets) {
T provider = getProvider(providerClass, target);
if (provider != null) {
providersList.add(provider);
}
}
return providersList;
}

private JavaProvider(TransitiveInfoProviderMap providers) {
super(JAVA_PROVIDER, ImmutableMap.<String, Object>of(
"transitive_runtime_jars", SkylarkNestedSet.of(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,7 @@
import com.google.devtools.build.lib.cmdline.Label;
import com.google.devtools.build.lib.packages.SkylarkClassObject;
import com.google.devtools.build.lib.rules.SkylarkRuleContext;
import com.google.devtools.build.lib.rules.java.JavaProvider;
import com.google.devtools.build.lib.rules.java.JavaSourceJarsProvider;
import com.google.devtools.build.lib.rules.python.PyCommon;
import com.google.devtools.build.lib.skylark.util.SkylarkTestCase;
Expand Down Expand Up @@ -430,7 +431,7 @@ public void shouldGetPrerequisites() throws Exception {
Object result = evalRuleContextCode(ruleContext, "ruleContext.attr.srcs");
// Check for a known provider
TransitiveInfoCollection tic1 = (TransitiveInfoCollection) ((SkylarkList) result).get(0);
assertNotNull(tic1.getProvider(JavaSourceJarsProvider.class));
assertNotNull(JavaProvider.getProvider(JavaSourceJarsProvider.class, tic1));
// Check an unimplemented provider too
assertNull(tic1.getProvider(SkylarkProviders.class)
.getValue(PyCommon.PYTHON_SKYLARK_PROVIDER_NAME));
Expand Down

0 comments on commit ceb0d88

Please sign in to comment.