Add toList() calls for iteration over NestedSet (part 1)
This is in preparation for making NestedSet *not* implement Iterable anymore.
Change-Id: Ic60d9683eb7f32f9edd0653956d3407fcdef8d6b
Closes #10412.
Change-Id: Ic60d9683eb7f32f9edd0653956d3407fcdef8d6b
PiperOrigin-RevId: 285718807
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/PrerequisiteArtifacts.java b/src/main/java/com/google/devtools/build/lib/analysis/PrerequisiteArtifacts.java
index 9d62428..9289a18 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/PrerequisiteArtifacts.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/PrerequisiteArtifacts.java
@@ -17,7 +17,6 @@
import com.google.common.base.Preconditions;
import com.google.common.base.Predicate;
import com.google.common.collect.ImmutableList;
-import com.google.common.collect.Iterables;
import com.google.devtools.build.lib.actions.Artifact;
import com.google.devtools.build.lib.analysis.configuredtargets.RuleConfiguredTarget.Mode;
import com.google.devtools.build.lib.collect.nestedset.NestedSet;
@@ -59,7 +58,7 @@
}
Set<Artifact> result = new LinkedHashSet<>();
for (FileProvider target : prerequisites) {
- Iterables.addAll(result, target.getFilesToBuild());
+ result.addAll(target.getFilesToBuild().toList());
}
return new PrerequisiteArtifacts(ruleContext, attributeName, ImmutableList.copyOf(result));
}
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/RuleContext.java b/src/main/java/com/google/devtools/build/lib/analysis/RuleContext.java
index 0810a03..a2b2ca0 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/RuleContext.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/RuleContext.java
@@ -1548,7 +1548,7 @@
public static boolean isVisible(Label label, TransitiveInfoCollection prerequisite) {
// Check visibility attribute
for (PackageGroupContents specification :
- prerequisite.getProvider(VisibilityProvider.class).getVisibility()) {
+ prerequisite.getProvider(VisibilityProvider.class).getVisibility().toList()) {
if (specification.containsPackage(label.getPackageIdentifier())) {
return true;
}
@@ -2018,15 +2018,15 @@
// If we performed this check when allowedFileTypes == NO_FILE this would
// always throw an error in those cases
if (allowedFileTypes != FileTypeSet.NO_FILE) {
- Iterable<Artifact> artifacts =
+ NestedSet<Artifact> artifacts =
prerequisite.getConfiguredTarget().getProvider(FileProvider.class).getFilesToBuild();
- if (attribute.isSingleArtifact() && Iterables.size(artifacts) != 1) {
+ if (attribute.isSingleArtifact() && !artifacts.isSingleton()) {
attributeError(
attribute.getName(),
"'" + prerequisite.getTarget().getLabel() + "' must produce a single file");
return;
}
- for (Artifact sourceArtifact : artifacts) {
+ for (Artifact sourceArtifact : artifacts.toList()) {
if (allowedFileTypes.apply(sourceArtifact.getFilename())) {
return;
}
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/Runfiles.java b/src/main/java/com/google/devtools/build/lib/analysis/Runfiles.java
index b2af011..b8cea4a 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/Runfiles.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/Runfiles.java
@@ -649,9 +649,9 @@
NestedSetBuilder<Artifact> allArtifacts = NestedSetBuilder.stableOrder();
allArtifacts
.addTransitive(unconditionalArtifacts)
- .addAll(Iterables.transform(symlinks, TO_ARTIFACT))
- .addAll(Iterables.transform(rootSymlinks, TO_ARTIFACT));
- for (PruningManifest manifest : getPruningManifests()) {
+ .addAll(Iterables.transform(symlinks.toList(), TO_ARTIFACT))
+ .addAll(Iterables.transform(rootSymlinks.toList(), TO_ARTIFACT));
+ for (PruningManifest manifest : getPruningManifests().toList()) {
allArtifacts.addTransitive(manifest.getCandidateRunfiles());
}
return allArtifacts.build();
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/SourceManifestAction.java b/src/main/java/com/google/devtools/build/lib/analysis/SourceManifestAction.java
index a5a81f4..4d9f809 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/SourceManifestAction.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/SourceManifestAction.java
@@ -155,7 +155,7 @@
*/
public static NestedSet<Artifact> getDependencies(Runfiles runfiles) {
NestedSetBuilder<Artifact> builder = NestedSetBuilder.stableOrder();
- for (Runfiles.PruningManifest manifest : runfiles.getPruningManifests()) {
+ for (Runfiles.PruningManifest manifest : runfiles.getPruningManifests().toList()) {
builder.add(manifest.getManifestFile());
}
return builder.build();
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/actions/LazyWritePathsFileAction.java b/src/main/java/com/google/devtools/build/lib/analysis/actions/LazyWritePathsFileAction.java
index 3387e81..0470b5c 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/actions/LazyWritePathsFileAction.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/actions/LazyWritePathsFileAction.java
@@ -76,7 +76,7 @@
private String getContents() {
StringBuilder stringBuilder = new StringBuilder();
- for (Artifact file : files) {
+ for (Artifact file : files.toList()) {
if (file.isSourceArtifact() || includeDerivedArtifacts) {
stringBuilder.append(file.getRootRelativePathString());
stringBuilder.append("\n");
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/constraints/ConstraintSemantics.java b/src/main/java/com/google/devtools/build/lib/analysis/constraints/ConstraintSemantics.java
index ed1fd24..346308c 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/constraints/ConstraintSemantics.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/constraints/ConstraintSemantics.java
@@ -643,7 +643,7 @@
// words, the removed environment is no good, but some subset of it may be.
for (EnvironmentWithGroup depEnv :
depEnvironments.getRefinedEnvironments().getGroupedEnvironments()) {
- for (Label fulfiller : depEnv.group().getFulfillers(depEnv.environment())) {
+ for (Label fulfiller : depEnv.group().getFulfillers(depEnv.environment()).toList()) {
if (prunedEnvironmentsFromThisDep.contains(fulfiller)) {
refinedEnvironmentsSoFar.add(depEnv);
}
@@ -792,7 +792,7 @@
// If the actual environments include members from the expected environment's group, we
// need to either find the environment itself or another one that transitively fulfills it.
if (actualEnvironmentLabels.contains(environment)
- || intersect(actualEnvironmentLabels, group.getFulfillers(environment))) {
+ || intersect(actualEnvironmentLabels, group.getFulfillers(environment).toList())) {
isSatisfied = true;
}
} else {
@@ -800,7 +800,7 @@
// the group's defaults are implicitly included. So we need to check those defaults for
// either the expected environment or another environment that transitively fulfills it.
if (group.isDefault(environment)
- || intersect(group.getFulfillers(environment), group.getDefaults())) {
+ || intersect(group.getFulfillers(environment).toList(), group.getDefaults())) {
isSatisfied = true;
}
}
@@ -816,7 +816,8 @@
if (!expectedEnvironments.getGroups().contains(group)) {
for (Label expectedDefault : group.getDefaults()) {
if (!actualEnvironmentLabels.contains(expectedDefault)
- && !intersect(actualEnvironmentLabels, group.getFulfillers(expectedDefault))) {
+ && !intersect(
+ actualEnvironmentLabels, group.getFulfillers(expectedDefault).toList())) {
missingEnvironments.add(expectedDefault);
}
}
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/skylark/SkylarkActionFactory.java b/src/main/java/com/google/devtools/build/lib/analysis/skylark/SkylarkActionFactory.java
index ee0309c..4c72629 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/skylark/SkylarkActionFactory.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/skylark/SkylarkActionFactory.java
@@ -502,7 +502,7 @@
} else {
NestedSet<Artifact> inputSet = ((Depset) inputs).getSetFromParam(Artifact.class, "inputs");
builder.addTransitiveInputs(inputSet);
- inputArtifacts = inputSet;
+ inputArtifacts = inputSet.toList();
}
List<Artifact> outputArtifacts = outputs.getContents(Artifact.class, "outputs");
@@ -536,7 +536,7 @@
if (toolsUnchecked instanceof Sequence) {
toolsIterable = ((Sequence<?>) toolsUnchecked).getContents(Object.class, "tools");
} else {
- toolsIterable = ((Depset) toolsUnchecked).getSet();
+ toolsIterable = ((Depset) toolsUnchecked).getSet().toList();
}
for (Object toolUnchecked : toolsIterable) {
if (toolUnchecked instanceof Artifact) {
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/skylark/SkylarkCommandLine.java b/src/main/java/com/google/devtools/build/lib/analysis/skylark/SkylarkCommandLine.java
index 9872741..ffc11be 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/skylark/SkylarkCommandLine.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/skylark/SkylarkCommandLine.java
@@ -28,6 +28,6 @@
NestedSet<Artifact> artifacts = files.getSetFromParam(Artifact.class, "files");
// TODO(bazel-team): This method should be deprecated and strongly discouraged, as it
// flattens a depset during analysis.
- return Artifact.joinExecPaths(separator, artifacts);
+ return Artifact.joinExecPaths(separator, artifacts.toList());
}
}
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/skylark/SkylarkRuleContext.java b/src/main/java/com/google/devtools/build/lib/analysis/skylark/SkylarkRuleContext.java
index 8d9ba30..1caa9a1 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/skylark/SkylarkRuleContext.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/skylark/SkylarkRuleContext.java
@@ -1066,7 +1066,7 @@
// TODO(lberki): This flattens a NestedSet.
// However, we can't turn this into a Depset because it's an incompatible change to
// Skylark.
- Iterables.addAll(inputs, helper.getResolvedTools());
+ inputs.addAll(helper.getResolvedTools().toList());
ImmutableMap<String, String> executionRequirements =
ImmutableMap.copyOf(
@@ -1174,7 +1174,7 @@
for (TransitiveInfoCollection current : knownLabels) {
builder.put(
AliasProvider.getDependencyLabel(current),
- ImmutableList.copyOf(current.getProvider(FileProvider.class).getFilesToBuild()));
+ current.getProvider(FileProvider.class).getFilesToBuild().toList());
}
return builder.build();
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/test/BaselineCoverageAction.java b/src/main/java/com/google/devtools/build/lib/analysis/test/BaselineCoverageAction.java
index 0c7af11..95244b4 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/test/BaselineCoverageAction.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/test/BaselineCoverageAction.java
@@ -66,7 +66,7 @@
private Iterable<String> getInstrumentedFilePathStrings() {
List<String> result = new ArrayList<>();
- for (Artifact instrumentedFile : instrumentedFiles) {
+ for (Artifact instrumentedFile : instrumentedFiles.toList()) {
result.add(instrumentedFile.getExecPathString());
}
return result;
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/test/InstrumentedFileManifestAction.java b/src/main/java/com/google/devtools/build/lib/analysis/test/InstrumentedFileManifestAction.java
index 69ab77f..b242c16 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/test/InstrumentedFileManifestAction.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/test/InstrumentedFileManifestAction.java
@@ -70,7 +70,7 @@
public void writeOutputFile(OutputStream out) throws IOException {
// Sort the exec paths before writing them out.
String[] fileNames =
- Iterables.toArray(Iterables.transform(files, TO_EXEC_PATH), String.class);
+ Iterables.toArray(Iterables.transform(files.toList(), TO_EXEC_PATH), String.class);
Arrays.sort(fileNames);
try (Writer writer = new OutputStreamWriter(out, ISO_8859_1)) {
for (String name : fileNames) {
@@ -86,7 +86,7 @@
protected void computeKey(ActionKeyContext actionKeyContext, Fingerprint fp) {
fp.addString(GUID);
// Not sorting here is probably cheaper, though it might lead to unnecessary re-execution.
- fp.addStrings(Iterables.transform(files, TO_EXEC_PATH));
+ fp.addStrings(Iterables.transform(files.toList(), TO_EXEC_PATH));
}
/**
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/test/InstrumentedFilesCollector.java b/src/main/java/com/google/devtools/build/lib/analysis/test/InstrumentedFilesCollector.java
index 4bd6348..98348c1 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/test/InstrumentedFilesCollector.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/test/InstrumentedFilesCollector.java
@@ -166,7 +166,7 @@
if (!spec.splitLists && dep.get(InstrumentedFilesInfo.SKYLARK_CONSTRUCTOR) != null) {
continue;
}
- for (Artifact artifact : dep.getProvider(FileProvider.class).getFilesToBuild()) {
+ for (Artifact artifact : dep.getProvider(FileProvider.class).getFilesToBuild().toList()) {
if (artifact.isSourceArtifact() &&
spec.instrumentedFileTypes.matches(artifact.getFilename())) {
localSourcesBuilder.add(artifact);