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/actions/MiddlemanFactory.java b/src/main/java/com/google/devtools/build/lib/actions/MiddlemanFactory.java
index a6296bd..72577cc 100644
--- a/src/main/java/com/google/devtools/build/lib/actions/MiddlemanFactory.java
+++ b/src/main/java/com/google/devtools/build/lib/actions/MiddlemanFactory.java
@@ -122,7 +122,7 @@
NestedSet<Artifact> inputs,
ArtifactRoot middlemanDir,
MiddlemanType middlemanType) {
- if (inputs == null || CollectionUtils.isEmpty(inputs)) {
+ if (inputs == null || inputs.isEmpty()) {
return null;
}
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);
diff --git a/src/main/java/com/google/devtools/build/lib/bazel/rules/java/BazelJavaSemantics.java b/src/main/java/com/google/devtools/build/lib/bazel/rules/java/BazelJavaSemantics.java
index 06c5741..01a9fc8 100644
--- a/src/main/java/com/google/devtools/build/lib/bazel/rules/java/BazelJavaSemantics.java
+++ b/src/main/java/com/google/devtools/build/lib/bazel/rules/java/BazelJavaSemantics.java
@@ -211,7 +211,7 @@
public String getValue() {
StringBuilder buffer = new StringBuilder();
buffer.append("\"");
- for (Artifact artifact : jars) {
+ for (Artifact artifact : jars.toList()) {
if (buffer.length() > 1) {
buffer.append(File.pathSeparatorChar);
}
diff --git a/src/main/java/com/google/devtools/build/lib/bazel/rules/python/BazelPythonSemantics.java b/src/main/java/com/google/devtools/build/lib/bazel/rules/python/BazelPythonSemantics.java
index 8817271..7beb823 100644
--- a/src/main/java/com/google/devtools/build/lib/bazel/rules/python/BazelPythonSemantics.java
+++ b/src/main/java/com/google/devtools/build/lib/bazel/rules/python/BazelPythonSemantics.java
@@ -167,7 +167,7 @@
Substitution.of(
"%main%", common.determineMainExecutableSource(/*withWorkspaceName=*/ true)),
Substitution.of("%python_binary%", pythonBinary),
- Substitution.of("%imports%", Joiner.on(":").join(common.getImports())),
+ Substitution.of("%imports%", Joiner.on(":").join(common.getImports().toList())),
Substitution.of("%workspace_name%", ruleContext.getWorkspaceName()),
Substitution.of("%is_zipfile%", boolToLiteral(isForZipFile)),
Substitution.of(
@@ -349,13 +349,13 @@
// Creating __init__.py files under each directory
argv.add("__init__.py=");
argv.addDynamicString(getZipRunfilesPath("__init__.py", workspaceName) + "=");
- for (String path : runfilesSupport.getRunfiles().getEmptyFilenames()) {
+ for (String path : runfilesSupport.getRunfiles().getEmptyFilenames().toList()) {
argv.addDynamicString(getZipRunfilesPath(path, workspaceName) + "=");
}
// Read each runfile from execute path, add them into zip file at the right runfiles path.
// Filter the executable file, cause we are building it.
- for (Artifact artifact : runfilesSupport.getRunfilesArtifacts()) {
+ for (Artifact artifact : runfilesSupport.getRunfilesArtifacts().toList()) {
if (!artifact.equals(executable) && !artifact.equals(zipFile)) {
argv.addDynamicString(
getZipRunfilesPath(artifact.getRunfilesPath(), workspaceName)
diff --git a/src/main/java/com/google/devtools/build/lib/collect/nestedset/NestedSetFingerprintCache.java b/src/main/java/com/google/devtools/build/lib/collect/nestedset/NestedSetFingerprintCache.java
index 9c718c4..e8201ea 100644
--- a/src/main/java/com/google/devtools/build/lib/collect/nestedset/NestedSetFingerprintCache.java
+++ b/src/main/java/com/google/devtools/build/lib/collect/nestedset/NestedSetFingerprintCache.java
@@ -59,7 +59,7 @@
private <T> void addNestedSetToFingerprintSlow(
MapFn<? super T> mapFn, Fingerprint fingerprint, NestedSet<T> nestedSet) {
- for (T object : nestedSet) {
+ for (T object : nestedSet.toList()) {
mapFn.expandToCommandLine(object, fingerprint);
}
}
diff --git a/src/main/java/com/google/devtools/build/lib/packages/EnvironmentLabels.java b/src/main/java/com/google/devtools/build/lib/packages/EnvironmentLabels.java
index b35cee2..789fc02 100644
--- a/src/main/java/com/google/devtools/build/lib/packages/EnvironmentLabels.java
+++ b/src/main/java/com/google/devtools/build/lib/packages/EnvironmentLabels.java
@@ -110,7 +110,7 @@
*
* <p>If no environments fulfill the input, returns an empty set.
*/
- public Iterable<Label> getFulfillers(Label environment) {
+ public NestedSet<Label> getFulfillers(Label environment) {
checkInitialized();
return fulfillersMap.get(environment);
}
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcBinary.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcBinary.java
index e1f5b78..9dac136 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcBinary.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcBinary.java
@@ -604,7 +604,7 @@
createDynamicLibrariesCopyActions(
ruleContext,
LibraryToLink.getDynamicLibrariesForRuntime(
- isStaticMode, depsCcLinkingContext.getLibraries()));
+ isStaticMode, depsCcLinkingContext.getLibraries().toList()));
}
// TODO(bazel-team): Do we need to put original shared libraries (along with
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcCommon.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcCommon.java
index 91e6ac1..d737fc1 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcCommon.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcCommon.java
@@ -286,7 +286,8 @@
Iterable<? extends TransitiveInfoCollection> providers =
ruleContext.getPrerequisitesIf("srcs", Mode.TARGET, FileProvider.class);
for (TransitiveInfoCollection provider : providers) {
- for (Artifact artifact : provider.getProvider(FileProvider.class).getFilesToBuild()) {
+ for (Artifact artifact :
+ provider.getProvider(FileProvider.class).getFilesToBuild().toList()) {
// TODO(bazel-team): We currently do not produce an error for duplicate headers and other
// non-source artifacts with different labels, as that would require cleaning up the code
// base without significant benefit; we should eventually make this consistent one way or
@@ -309,7 +310,8 @@
Iterable<? extends TransitiveInfoCollection> providers =
ruleContext.getPrerequisitesIf("srcs", Mode.TARGET, FileProvider.class);
for (TransitiveInfoCollection provider : providers) {
- for (Artifact artifact : provider.getProvider(FileProvider.class).getFilesToBuild()) {
+ for (Artifact artifact :
+ provider.getProvider(FileProvider.class).getFilesToBuild().toList()) {
if (!CppFileTypes.CPP_HEADER.matches(artifact.getExecPath())) {
Label oldLabel = map.put(artifact, provider.getLabel());
if (SourceCategory.CC_AND_OBJC.getSourceTypes().matches(artifact.getExecPathString())
@@ -345,7 +347,7 @@
for (TransitiveInfoCollection target :
ruleContext.getPrerequisitesIf("hdrs", Mode.TARGET, FileProvider.class)) {
FileProvider provider = target.getProvider(FileProvider.class);
- for (Artifact artifact : provider.getFilesToBuild()) {
+ for (Artifact artifact : provider.getFilesToBuild().toList()) {
if (CppRuleClasses.DISALLOWED_HDRS_FILES.matches(artifact.getFilename())) {
ruleContext.attributeWarning("hdrs", "file '" + artifact.getFilename()
+ "' from target '" + target.getLabel() + "' is not allowed in hdrs");
@@ -668,7 +670,7 @@
ruleContext.getPrerequisites("srcs", Mode.TARGET, FileProvider.class)) {
prerequisites.addAll(
FileType.filter(
- provider.getFilesToBuild(), SourceCategory.CC_AND_OBJC.getSourceTypes()));
+ provider.getFilesToBuild().toList(), SourceCategory.CC_AND_OBJC.getSourceTypes()));
}
}
prerequisites.addTransitive(ccCompilationContext.getDeclaredIncludeSrcs());
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcCompilationHelper.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcCompilationHelper.java
index 785df63..ec24a07 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcCompilationHelper.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcCompilationHelper.java
@@ -1187,14 +1187,14 @@
HashMap<String, Integer> count = new LinkedHashMap<>();
HashMap<String, Integer> number = new LinkedHashMap<>();
- for (Artifact source : sourceArtifacts) {
+ for (Artifact source : sourceArtifacts.toList()) {
String outputName =
FileSystemUtils.removeExtension(source.getRootRelativePath()).getBaseName();
count.put(outputName.toLowerCase(),
count.getOrDefault(outputName.toLowerCase(), 0) + 1);
}
- for (Artifact source : sourceArtifacts) {
+ for (Artifact source : sourceArtifacts.toList()) {
String outputName =
FileSystemUtils.removeExtension(source.getRootRelativePath()).getBaseName();
if (count.getOrDefault(outputName.toLowerCase(), 0) > 1) {
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcLinkingContext.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcLinkingContext.java
index 4423c8e..a831082 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcLinkingContext.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcLinkingContext.java
@@ -378,12 +378,12 @@
}
public List<Artifact> getDynamicLibrariesForRuntime(boolean linkingStatically) {
- return LibraryToLink.getDynamicLibrariesForRuntime(linkingStatically, getLibraries());
+ return LibraryToLink.getDynamicLibrariesForRuntime(linkingStatically, getLibraries().toList());
}
public NestedSet<LibraryToLink> getLibraries() {
NestedSetBuilder<LibraryToLink> libraries = NestedSetBuilder.linkOrder();
- for (LinkerInput linkerInput : linkerInputs) {
+ for (LinkerInput linkerInput : linkerInputs.toList()) {
libraries.addAll(linkerInput.libraries);
}
return libraries.build();
@@ -420,14 +420,14 @@
public NestedSet<LinkOptions> getUserLinkFlags() {
NestedSetBuilder<LinkOptions> userLinkFlags = NestedSetBuilder.linkOrder();
- for (LinkerInput linkerInput : linkerInputs) {
+ for (LinkerInput linkerInput : linkerInputs.toList()) {
userLinkFlags.addAll(linkerInput.getUserLinkFlags());
}
return userLinkFlags.build();
}
public ImmutableList<String> getFlattenedUserLinkFlags() {
- return Streams.stream(getUserLinkFlags())
+ return Streams.stream(getUserLinkFlags().toList())
.map(LinkOptions::get)
.flatMap(Collection::stream)
.collect(ImmutableList.toImmutableList());
@@ -435,7 +435,7 @@
public NestedSet<Linkstamp> getLinkstamps() {
NestedSetBuilder<Linkstamp> linkstamps = NestedSetBuilder.linkOrder();
- for (LinkerInput linkerInput : linkerInputs) {
+ for (LinkerInput linkerInput : linkerInputs.toList()) {
linkstamps.addAll(linkerInput.getLinkstamps());
}
return linkstamps.build();
@@ -443,7 +443,7 @@
public NestedSet<Artifact> getNonCodeInputs() {
NestedSetBuilder<Artifact> nonCodeInputs = NestedSetBuilder.linkOrder();
- for (LinkerInput linkerInput : linkerInputs) {
+ for (LinkerInput linkerInput : linkerInputs.toList()) {
nonCodeInputs.addAll(linkerInput.getNonCodeInputs());
}
return nonCodeInputs.build();
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcLinkingHelper.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcLinkingHelper.java
index 4a94814..4067873 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcLinkingHelper.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcLinkingHelper.java
@@ -363,7 +363,7 @@
public CcLinkingContext buildCcLinkingContextFromLibrariesToLink(
List<LibraryToLink> librariesToLink, CcCompilationContext ccCompilationContext) {
ImmutableList.Builder<Linkstamp> linkstampBuilder = ImmutableList.builder();
- for (Artifact linkstamp : linkstamps.build()) {
+ for (Artifact linkstamp : linkstamps.build().toList()) {
linkstampBuilder.add(
new Linkstamp(
linkstamp,
@@ -879,7 +879,7 @@
NestedSet<LibraryToLink> librariesToLink, boolean staticMode, boolean forDynamicLibrary) {
ImmutableList.Builder<LinkerInputs.LibraryToLink> librariesToLinkBuilder =
ImmutableList.builder();
- for (LibraryToLink libraryToLink : librariesToLink) {
+ for (LibraryToLink libraryToLink : librariesToLink.toList()) {
LinkerInputs.LibraryToLink staticLibraryToLink =
libraryToLink.getStaticLibrary() == null ? null : libraryToLink.getStaticLibraryToLink();
LinkerInputs.LibraryToLink picStaticLibraryToLink =
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcToolchainProviderHelper.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcToolchainProviderHelper.java
index c91be9a..ff0e60e 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcToolchainProviderHelper.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcToolchainProviderHelper.java
@@ -355,7 +355,7 @@
private static ImmutableList<Artifact> getBuiltinIncludes(NestedSet<Artifact> libc) {
ImmutableList.Builder<Artifact> result = ImmutableList.builder();
- for (Artifact artifact : libc) {
+ for (Artifact artifact : libc.toList()) {
for (PathFragment suffix : BUILTIN_INCLUDE_FILE_SUFFIXES) {
if (artifact.getExecPath().endsWith(suffix)) {
result.add(artifact);
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CppLinkActionBuilder.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CppLinkActionBuilder.java
index 82f2544..fc6ae16 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CppLinkActionBuilder.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CppLinkActionBuilder.java
@@ -319,7 +319,7 @@
if (!ltoCompilationContext.isEmpty()) {
return true;
}
- for (LinkerInputs.LibraryToLink lib : libraries.build()) {
+ for (LinkerInputs.LibraryToLink lib : libraries.build().toList()) {
if (!lib.getLtoCompilationContext().isEmpty()) {
return true;
}
diff --git a/src/main/java/com/google/devtools/build/lib/rules/genrule/GenRuleBase.java b/src/main/java/com/google/devtools/build/lib/rules/genrule/GenRuleBase.java
index 87630a8..0c00d11 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/genrule/GenRuleBase.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/genrule/GenRuleBase.java
@@ -16,7 +16,6 @@
import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableMap;
-import com.google.common.collect.Iterables;
import com.google.common.collect.Maps;
import com.google.devtools.build.lib.actions.Artifact;
import com.google.devtools.build.lib.actions.CommandLines;
@@ -122,7 +121,8 @@
ruleContext.attributeError("outs", "Genrules without outputs don't make sense");
}
if (ruleContext.attributes().get("executable", Type.BOOLEAN)
- && Iterables.size(filesToBuild) > 1) {
+ && !filesToBuild.isEmpty()
+ && !filesToBuild.isSingleton()) {
ruleContext.attributeError(
"executable",
"if genrules produce executables, they are allowed only one output. "
@@ -290,10 +290,7 @@
if (!ruleContext.attributes().get("executable", Type.BOOLEAN)) {
return null;
}
- if (Iterables.size(filesToBuild) == 1) {
- return Iterables.getOnlyElement(filesToBuild);
- }
- return null;
+ return filesToBuild.isSingleton() ? filesToBuild.getSingleton() : null;
}
/**
@@ -339,7 +336,7 @@
private String lookupVariableImpl(String variableName) throws ExpansionException {
if (variableName.equals("SRCS")) {
- return Artifact.joinExecPaths(" ", resolvedSrcs);
+ return Artifact.joinExecPaths(" ", resolvedSrcs.toList());
}
if (variableName.equals("<")) {
@@ -347,7 +344,7 @@
}
if (variableName.equals("OUTS")) {
- return Artifact.joinExecPaths(" ", filesToBuild);
+ return Artifact.joinExecPaths(" ", filesToBuild.toList());
}
if (variableName.equals("@")) {
@@ -374,8 +371,8 @@
// multiple filenames, this variable instead expands to the
// package's root directory in the genfiles tree, even if all the
// generated files belong to the same subdirectory!
- if (Iterables.size(filesToBuild) == 1) {
- Artifact outputFile = Iterables.getOnlyElement(filesToBuild);
+ if (filesToBuild.isSingleton()) {
+ Artifact outputFile = filesToBuild.getSingleton();
PathFragment relativeOutputFile = outputFile.getExecPath();
if (relativeOutputFile.segmentCount() <= 1) {
// This should never happen, since the path should contain at
@@ -396,18 +393,17 @@
* Returns the path of the sole element "artifacts", generating an exception with an informative
* error message iff the set is not a singleton. Used to expand "$<", "$@".
*/
- private final String expandSingletonArtifact(Iterable<Artifact> artifacts,
- String variable,
- String artifactName)
+ private static final String expandSingletonArtifact(
+ NestedSet<Artifact> artifacts, String variable, String artifactName)
throws ExpansionException {
- if (Iterables.isEmpty(artifacts)) {
+ if (artifacts.isEmpty()) {
throw new ExpansionException("variable '" + variable
+ "' : no " + artifactName);
- } else if (Iterables.size(artifacts) > 1) {
+ } else if (!artifacts.isSingleton()) {
throw new ExpansionException("variable '" + variable
+ "' : more than one " + artifactName);
}
- return Iterables.getOnlyElement(artifacts).getExecPathString();
+ return artifacts.getSingleton().getExecPathString();
}
}
}
diff --git a/src/main/java/com/google/devtools/build/lib/rules/java/JavaBinary.java b/src/main/java/com/google/devtools/build/lib/rules/java/JavaBinary.java
index dacae1b..2db758a 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/java/JavaBinary.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/java/JavaBinary.java
@@ -565,7 +565,7 @@
// Add symlinks to the C++ runtime libraries under a path that can be built
// into the Java binary without having to embed the crosstool, gcc, and grte
// version information contained within the libraries' package paths.
- for (Artifact lib : dynamicRuntimeActionInputs) {
+ for (Artifact lib : dynamicRuntimeActionInputs.toList()) {
PathFragment path = CPP_RUNTIMES.getRelative(lib.getExecPath().getBaseName());
builder.addSymlink(path, lib);
}
@@ -583,7 +583,7 @@
Iterable<? extends TransitiveInfoCollection> deps) {
NestedSet<LibraryToLink> linkerInputs =
new NativeLibraryNestedSetBuilder().addJavaTargets(deps).build();
- return LibraryToLink.getDynamicLibrariesForLinking(linkerInputs);
+ return LibraryToLink.getDynamicLibrariesForLinking(linkerInputs.toList());
}
private static boolean isJavaTestRule(RuleContext ruleContext) {
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 6357397..2fd30dc 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
@@ -423,8 +423,10 @@
// It is used to allow Error Prone checks to load additional data,
// and Error Prone doesn't run during header compilation.
builder.addAllJavacOpts(getJavacOpts());
- if (Iterables.contains(
- plugins.processorClasses(), "dagger.internal.codegen.ComponentProcessor")) {
+ if (plugins
+ .processorClasses()
+ .toList()
+ .contains("dagger.internal.codegen.ComponentProcessor")) {
// see b/31371210
builder.addJavacOpt("-Aexperimental_turbine_hjar");
}
diff --git a/src/main/java/com/google/devtools/build/lib/rules/java/JavaImport.java b/src/main/java/com/google/devtools/build/lib/rules/java/JavaImport.java
index 7e39c09..a72006d 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/java/JavaImport.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/java/JavaImport.java
@@ -195,7 +195,7 @@
if (JavaInfo.getProvider(JavaCompilationArgsProvider.class, info) != null) {
ruleContext.attributeError("jars", "should not refer to Java rules");
}
- for (Artifact jar : info.getProvider(FileProvider.class).getFilesToBuild()) {
+ for (Artifact jar : info.getProvider(FileProvider.class).getFilesToBuild().toList()) {
if (!JavaSemantics.JAR.matches(jar.getFilename())) {
ruleContext.attributeError("jars", jar.getFilename() + " is not a .jar file");
} else {
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/SkyframeExecutor.java b/src/main/java/com/google/devtools/build/lib/skyframe/SkyframeExecutor.java
index 5daf155..dd072ac 100644
--- a/src/main/java/com/google/devtools/build/lib/skyframe/SkyframeExecutor.java
+++ b/src/main/java/com/google/devtools/build/lib/skyframe/SkyframeExecutor.java
@@ -2597,7 +2597,7 @@
"Unexpected Exception type from PackageValue for '"
+ pkgName
+ "'' with root causes: "
- + Iterables.toString(error.getRootCauses()),
+ + error.getRootCauses().toList().toString(),
e);
}
return result.get(key).getPackage();
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/packages/AbstractPackageLoader.java b/src/main/java/com/google/devtools/build/lib/skyframe/packages/AbstractPackageLoader.java
index fa72a5d..686d6d1 100644
--- a/src/main/java/com/google/devtools/build/lib/skyframe/packages/AbstractPackageLoader.java
+++ b/src/main/java/com/google/devtools/build/lib/skyframe/packages/AbstractPackageLoader.java
@@ -21,7 +21,6 @@
import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableMap;
import com.google.common.collect.ImmutableSet;
-import com.google.common.collect.Iterables;
import com.google.common.eventbus.EventBus;
import com.google.devtools.build.lib.actions.FileStateValue;
import com.google.devtools.build.lib.actions.FileValue;
@@ -357,7 +356,7 @@
"Unexpected Exception type from PackageValue for '"
+ pkgId
+ "'' with root causes: "
- + Iterables.toString(error.getRootCauses()),
+ + error.getRootCauses().toList().toString(),
e);
}
diff --git a/src/main/java/com/google/devtools/build/lib/syntax/Depset.java b/src/main/java/com/google/devtools/build/lib/syntax/Depset.java
index 43f16e4..84bb8d1 100644
--- a/src/main/java/com/google/devtools/build/lib/syntax/Depset.java
+++ b/src/main/java/com/google/devtools/build/lib/syntax/Depset.java
@@ -387,7 +387,7 @@
@Override
public void repr(Printer printer) {
printer.append("depset(");
- printer.printList(set, "[", ", ", "]", null);
+ printer.printList(set.toList(), "[", ", ", "]", null);
Order order = getOrder();
if (order != Order.STABLE_ORDER) {
printer.append(", order = ");
diff --git a/src/main/java/com/google/devtools/build/skyframe/ErrorInfo.java b/src/main/java/com/google/devtools/build/skyframe/ErrorInfo.java
index 7a2c416..0451008 100644
--- a/src/main/java/com/google/devtools/build/skyframe/ErrorInfo.java
+++ b/src/main/java/com/google/devtools/build/skyframe/ErrorInfo.java
@@ -202,10 +202,10 @@
/**
* The root causes of a value that failed to build are its descendant values that failed to build.
* If a value's descendants all built successfully, but it failed to, its root cause will be
- * itself. If a value depends on a cycle, but has no other errors, this method will return
- * the empty set.
+ * itself. If a value depends on a cycle, but has no other errors, this method will return the
+ * empty set.
*/
- public Iterable<SkyKey> getRootCauses() {
+ public NestedSet<SkyKey> getRootCauses() {
return rootCauses;
}
diff --git a/src/main/java/com/google/devtools/build/skyframe/ValueWithMetadata.java b/src/main/java/com/google/devtools/build/skyframe/ValueWithMetadata.java
index d7b53c8..3d4ee92 100644
--- a/src/main/java/com/google/devtools/build/skyframe/ValueWithMetadata.java
+++ b/src/main/java/com/google/devtools/build/skyframe/ValueWithMetadata.java
@@ -15,7 +15,6 @@
import com.google.common.annotations.VisibleForTesting;
import com.google.common.base.MoreObjects;
import com.google.common.base.Preconditions;
-import com.google.common.collect.Iterables;
import com.google.devtools.build.lib.collect.nestedset.NestedSet;
import com.google.devtools.build.lib.collect.nestedset.NestedSetBuilder;
import com.google.devtools.build.lib.collect.nestedset.Order;
@@ -160,8 +159,8 @@
public String toString() {
return MoreObjects.toStringHelper(this)
.add("value", value)
- .add("transitiveEvents size", Iterables.size(transitiveEvents))
- .add("transitivePostables size", Iterables.size(transitivePostables))
+ .add("transitiveEvents size", transitiveEvents.toList().size())
+ .add("transitivePostables size", transitivePostables.toList().size())
.toString();
}
}