Java: use ImmutableSet for outputs
Using a NestedSet here is unnecessary, as AbstractAction copies it to an ImmutableSet. Instead, use ImmutableSet from the beginning. This also avoids iterating over a NestedSet, which we're considering deprecating.
PiperOrigin-RevId: 284060034
diff --git a/src/main/java/com/google/devtools/build/lib/rules/java/JavaCompileAction.java b/src/main/java/com/google/devtools/build/lib/rules/java/JavaCompileAction.java
index 3e19925..38d63d2 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/java/JavaCompileAction.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/java/JavaCompileAction.java
@@ -132,7 +132,7 @@
NestedSet<Artifact> mandatoryInputs,
NestedSet<Artifact> transitiveInputs,
NestedSet<Artifact> directJars,
- NestedSet<Artifact> outputs,
+ ImmutableSet<Artifact> outputs,
ImmutableMap<String, String> executionInfo,
ExtraActionInfoSupplier extraActionInfoSupplier,
CommandLine executableLine,
diff --git a/src/main/java/com/google/devtools/build/lib/rules/java/JavaCompileActionBuilder.java b/src/main/java/com/google/devtools/build/lib/rules/java/JavaCompileActionBuilder.java
index ca2d05c..074c40d 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/java/JavaCompileActionBuilder.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/java/JavaCompileActionBuilder.java
@@ -301,9 +301,9 @@
/* classpathMode= */ classpathMode);
}
- private NestedSet<Artifact> allOutputs() {
- return NestedSetBuilder.<Artifact>stableOrder()
- .addTransitive(outputs.toNestedSet())
+ private ImmutableSet<Artifact> allOutputs() {
+ return ImmutableSet.<Artifact>builder()
+ .addAll(outputs.toSet())
.addAll(additionalOutputs)
.build();
}
diff --git a/src/main/java/com/google/devtools/build/lib/rules/java/JavaCompileOutputs.java b/src/main/java/com/google/devtools/build/lib/rules/java/JavaCompileOutputs.java
index 3606b0e..dc27df7 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/java/JavaCompileOutputs.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/java/JavaCompileOutputs.java
@@ -15,9 +15,8 @@
package com.google.devtools.build.lib.rules.java;
import com.google.auto.value.AutoValue;
+import com.google.common.collect.ImmutableSet;
import com.google.devtools.build.lib.actions.Artifact;
-import com.google.devtools.build.lib.collect.nestedset.NestedSet;
-import com.google.devtools.build.lib.collect.nestedset.NestedSetBuilder;
import java.util.stream.Stream;
import javax.annotation.Nullable;
@@ -59,13 +58,11 @@
return toBuilder().output(output).build();
}
- public NestedSet<T> toNestedSet() {
- NestedSetBuilder<T> result = NestedSetBuilder.<T>stableOrder();
+ public ImmutableSet<T> toSet() {
// 'genClass' is created by a separate action
- Stream.of(output(), manifestProto(), depsProto(), genSource(), nativeHeader())
+ return Stream.of(output(), manifestProto(), depsProto(), genSource(), nativeHeader())
.filter(x -> x != null)
- .forEachOrdered(result::add);
- return result.build();
+ .collect(ImmutableSet.toImmutableSet());
}
@AutoValue.Builder
diff --git a/src/main/java/com/google/devtools/build/lib/rules/java/JavaHeaderCompileActionBuilder.java b/src/main/java/com/google/devtools/build/lib/rules/java/JavaHeaderCompileActionBuilder.java
index 0ec5cff..88e424c 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/java/JavaHeaderCompileActionBuilder.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/java/JavaHeaderCompileActionBuilder.java
@@ -264,8 +264,7 @@
/* sourceJars= */ sourceJars,
/* plugins= */ plugins);
- NestedSet<Artifact> outputs =
- NestedSetBuilder.create(Order.STABLE_ORDER, outputJar, outputDepsProto);
+ ImmutableSet<Artifact> outputs = ImmutableSet.of(outputJar, outputDepsProto);
NestedSetBuilder<Artifact> mandatoryInputs =
NestedSetBuilder.<Artifact>stableOrder()