Now that SkyKey is an interface, accept Iterable<? extends SkyKey>
A subsequent CL makes TargetPatternKey implement SkyKey, and it's much nicer
if I can pass lists of TargetPatternKey to the various Skyframe APIs.
PiperOrigin-RevId: 162359843
diff --git a/src/main/java/com/google/devtools/build/skyframe/AbstractSkyFunctionEnvironment.java b/src/main/java/com/google/devtools/build/skyframe/AbstractSkyFunctionEnvironment.java
index 7ddd11b..7c5deab 100644
--- a/src/main/java/com/google/devtools/build/skyframe/AbstractSkyFunctionEnvironment.java
+++ b/src/main/java/com/google/devtools/build/skyframe/AbstractSkyFunctionEnvironment.java
@@ -105,7 +105,7 @@
E4 extends Exception,
E5 extends Exception>
Map<SkyKey, ValueOrException5<E1, E2, E3, E4, E5>> getValueOrExceptions(
- Iterable<SkyKey> depKeys,
+ Iterable<? extends SkyKey> depKeys,
final Class<E1> exceptionClass1,
final Class<E2> exceptionClass2,
final Class<E3> exceptionClass3,
@@ -169,7 +169,7 @@
/** Implementations should set {@link #valuesMissing} as necessary. */
protected abstract Map<SkyKey, ValueOrUntypedException> getValueOrUntypedExceptions(
- Iterable<SkyKey> depKeys) throws InterruptedException;
+ Iterable<? extends SkyKey> depKeys) throws InterruptedException;
@Override
@Nullable
@@ -257,7 +257,7 @@
@Override
public <E extends Exception> Map<SkyKey, ValueOrException<E>> getValuesOrThrow(
- Iterable<SkyKey> depKeys, Class<E> exceptionClass) throws InterruptedException {
+ Iterable<? extends SkyKey> depKeys, Class<E> exceptionClass) throws InterruptedException {
return Maps.transformValues(
getValuesOrThrow(depKeys, exceptionClass, BottomException.class),
makeSafeDowncastToVOEFunction(exceptionClass));
@@ -266,8 +266,8 @@
@Override
public <E1 extends Exception, E2 extends Exception>
Map<SkyKey, ValueOrException2<E1, E2>> getValuesOrThrow(
- Iterable<SkyKey> depKeys, Class<E1> exceptionClass1, Class<E2> exceptionClass2)
- throws InterruptedException {
+ Iterable<? extends SkyKey> depKeys, Class<E1> exceptionClass1, Class<E2> exceptionClass2)
+ throws InterruptedException {
return Maps.transformValues(
getValuesOrThrow(depKeys, exceptionClass1, exceptionClass2, BottomException.class),
makeSafeDowncastToVOE2Function(exceptionClass1, exceptionClass2));
@@ -276,11 +276,11 @@
@Override
public <E1 extends Exception, E2 extends Exception, E3 extends Exception>
Map<SkyKey, ValueOrException3<E1, E2, E3>> getValuesOrThrow(
- Iterable<SkyKey> depKeys,
+ Iterable<? extends SkyKey> depKeys,
Class<E1> exceptionClass1,
Class<E2> exceptionClass2,
Class<E3> exceptionClass3)
- throws InterruptedException {
+ throws InterruptedException {
return Maps.transformValues(
getValuesOrThrow(depKeys, exceptionClass1, exceptionClass2, exceptionClass3,
BottomException.class),
@@ -290,12 +290,12 @@
@Override
public <E1 extends Exception, E2 extends Exception, E3 extends Exception, E4 extends Exception>
Map<SkyKey, ValueOrException4<E1, E2, E3, E4>> getValuesOrThrow(
- Iterable<SkyKey> depKeys,
+ Iterable<? extends SkyKey> depKeys,
Class<E1> exceptionClass1,
Class<E2> exceptionClass2,
Class<E3> exceptionClass3,
Class<E4> exceptionClass4)
- throws InterruptedException {
+ throws InterruptedException {
return Maps.transformValues(
getValuesOrThrow(depKeys, exceptionClass1, exceptionClass2, exceptionClass3,
exceptionClass4, BottomException.class),
@@ -311,13 +311,13 @@
E4 extends Exception,
E5 extends Exception>
Map<SkyKey, ValueOrException5<E1, E2, E3, E4, E5>> getValuesOrThrow(
- Iterable<SkyKey> depKeys,
+ Iterable<? extends SkyKey> depKeys,
Class<E1> exceptionClass1,
Class<E2> exceptionClass2,
Class<E3> exceptionClass3,
Class<E4> exceptionClass4,
Class<E5> exceptionClass5)
- throws InterruptedException {
+ throws InterruptedException {
Map<SkyKey, ValueOrException5<E1, E2, E3, E4, E5>> result =
getValueOrExceptions(
depKeys,
diff --git a/src/main/java/com/google/devtools/build/skyframe/BuildDriver.java b/src/main/java/com/google/devtools/build/skyframe/BuildDriver.java
index ec6ccbf..78c2479 100644
--- a/src/main/java/com/google/devtools/build/skyframe/BuildDriver.java
+++ b/src/main/java/com/google/devtools/build/skyframe/BuildDriver.java
@@ -26,8 +26,9 @@
* of a {@link Version} value.
*/
<T extends SkyValue> EvaluationResult<T> evaluate(
- Iterable<SkyKey> roots, boolean keepGoing, int numThreads, ExtendedEventHandler reporter)
- throws InterruptedException;
+ Iterable<? extends SkyKey> roots, boolean keepGoing, int numThreads,
+ ExtendedEventHandler reporter)
+ throws InterruptedException;
/**
* Retrieve metadata about the computation over the given roots. Data returned is specific to the
diff --git a/src/main/java/com/google/devtools/build/skyframe/Evaluator.java b/src/main/java/com/google/devtools/build/skyframe/Evaluator.java
index 56388da..905e0f6 100644
--- a/src/main/java/com/google/devtools/build/skyframe/Evaluator.java
+++ b/src/main/java/com/google/devtools/build/skyframe/Evaluator.java
@@ -30,14 +30,14 @@
* @param keepGoing whether {@link #eval} should continue if building a {link Value} fails.
* Otherwise, we throw an exception on failure.
*/
- Evaluator create(ProcessableGraph graph, long graphVersion, EventHandler reporter,
- boolean keepGoing);
+ Evaluator create(
+ ProcessableGraph graph, long graphVersion, EventHandler reporter, boolean keepGoing);
}
/**
* Evaluates a set of values. Returns an {@link EvaluationResult}. All elements of skyKeys must
* be keys for Values of subtype T.
*/
- <T extends SkyValue> EvaluationResult<T> eval(Iterable<SkyKey> skyKeys)
+ <T extends SkyValue> EvaluationResult<T> eval(Iterable<? extends SkyKey> skyKeys)
throws InterruptedException;
}
diff --git a/src/main/java/com/google/devtools/build/skyframe/InMemoryGraph.java b/src/main/java/com/google/devtools/build/skyframe/InMemoryGraph.java
index 267ae78..e8c7d35 100644
--- a/src/main/java/com/google/devtools/build/skyframe/InMemoryGraph.java
+++ b/src/main/java/com/google/devtools/build/skyframe/InMemoryGraph.java
@@ -28,7 +28,7 @@
@Override
Map<SkyKey, ? extends NodeEntry> getBatch(
- @Nullable SkyKey requestor, Reason reason, Iterable<SkyKey> keys);
+ @Nullable SkyKey requestor, Reason reason, Iterable<? extends SkyKey> keys);
/**
* Returns a read-only live view of the nodes in the graph. All node are included. Dirty values
diff --git a/src/main/java/com/google/devtools/build/skyframe/InMemoryGraphImpl.java b/src/main/java/com/google/devtools/build/skyframe/InMemoryGraphImpl.java
index b9ca140..05029be 100644
--- a/src/main/java/com/google/devtools/build/skyframe/InMemoryGraphImpl.java
+++ b/src/main/java/com/google/devtools/build/skyframe/InMemoryGraphImpl.java
@@ -58,7 +58,8 @@
}
@Override
- public Map<SkyKey, NodeEntry> getBatch(SkyKey requestor, Reason reason, Iterable<SkyKey> keys) {
+ public Map<SkyKey, NodeEntry> getBatch(
+ SkyKey requestor, Reason reason, Iterable<? extends SkyKey> keys) {
// Use a HashMap, not an ImmutableMap.Builder, because we have not yet deduplicated these keys
// and ImmutableMap.Builder does not tolerate duplicates. The map will be thrown away shortly.
HashMap<SkyKey, NodeEntry> result = new HashMap<>();
diff --git a/src/main/java/com/google/devtools/build/skyframe/InMemoryMemoizingEvaluator.java b/src/main/java/com/google/devtools/build/skyframe/InMemoryMemoizingEvaluator.java
index 504de3a..1750263 100644
--- a/src/main/java/com/google/devtools/build/skyframe/InMemoryMemoizingEvaluator.java
+++ b/src/main/java/com/google/devtools/build/skyframe/InMemoryMemoizingEvaluator.java
@@ -137,7 +137,7 @@
@Override
public <T extends SkyValue> EvaluationResult<T> evaluate(
- Iterable<SkyKey> roots,
+ Iterable<? extends SkyKey> roots,
Version version,
boolean keepGoing,
int numThreads,
diff --git a/src/main/java/com/google/devtools/build/skyframe/MemoizingEvaluator.java b/src/main/java/com/google/devtools/build/skyframe/MemoizingEvaluator.java
index 568e08f..2fe92fa 100644
--- a/src/main/java/com/google/devtools/build/skyframe/MemoizingEvaluator.java
+++ b/src/main/java/com/google/devtools/build/skyframe/MemoizingEvaluator.java
@@ -46,7 +46,7 @@
* missing.
*/
<T extends SkyValue> EvaluationResult<T> evaluate(
- Iterable<SkyKey> roots,
+ Iterable<? extends SkyKey> roots,
Version version,
boolean keepGoing,
int numThreads,
diff --git a/src/main/java/com/google/devtools/build/skyframe/ParallelEvaluator.java b/src/main/java/com/google/devtools/build/skyframe/ParallelEvaluator.java
index aac9277..a47a579 100644
--- a/src/main/java/com/google/devtools/build/skyframe/ParallelEvaluator.java
+++ b/src/main/java/com/google/devtools/build/skyframe/ParallelEvaluator.java
@@ -690,7 +690,7 @@
@Override
@ThreadCompatible
- public <T extends SkyValue> EvaluationResult<T> eval(Iterable<SkyKey> skyKeys)
+ public <T extends SkyValue> EvaluationResult<T> eval(Iterable<? extends SkyKey> skyKeys)
throws InterruptedException {
ImmutableSet<SkyKey> skyKeySet = ImmutableSet.copyOf(skyKeys);
diff --git a/src/main/java/com/google/devtools/build/skyframe/QueryableGraph.java b/src/main/java/com/google/devtools/build/skyframe/QueryableGraph.java
index 07f8faf..26422dd 100644
--- a/src/main/java/com/google/devtools/build/skyframe/QueryableGraph.java
+++ b/src/main/java/com/google/devtools/build/skyframe/QueryableGraph.java
@@ -46,7 +46,8 @@
* @param reason the reason the nodes are being requested.
*/
Map<SkyKey, ? extends NodeEntry> getBatch(
- @Nullable SkyKey requestor, Reason reason, Iterable<SkyKey> keys) throws InterruptedException;
+ @Nullable SkyKey requestor, Reason reason, Iterable<? extends SkyKey> keys)
+ throws InterruptedException;
/**
* Examines all the given keys. Returns an iterable of keys whose corresponding nodes are
diff --git a/src/main/java/com/google/devtools/build/skyframe/QueryableGraphBackedSkyFunctionEnvironment.java b/src/main/java/com/google/devtools/build/skyframe/QueryableGraphBackedSkyFunctionEnvironment.java
index 684db93..dace26e 100644
--- a/src/main/java/com/google/devtools/build/skyframe/QueryableGraphBackedSkyFunctionEnvironment.java
+++ b/src/main/java/com/google/devtools/build/skyframe/QueryableGraphBackedSkyFunctionEnvironment.java
@@ -61,7 +61,7 @@
@Override
protected Map<SkyKey, ValueOrUntypedException> getValueOrUntypedExceptions(
- Iterable<SkyKey> depKeys) throws InterruptedException {
+ Iterable<? extends SkyKey> depKeys) throws InterruptedException {
Map<SkyKey, ? extends NodeEntry> resultMap =
queryableGraph.getBatch(null, Reason.DEP_REQUESTED, depKeys);
// resultMap will be smaller than what we actually return if some of depKeys were not found in
diff --git a/src/main/java/com/google/devtools/build/skyframe/SequentialBuildDriver.java b/src/main/java/com/google/devtools/build/skyframe/SequentialBuildDriver.java
index 7f4c9fe..988412b 100644
--- a/src/main/java/com/google/devtools/build/skyframe/SequentialBuildDriver.java
+++ b/src/main/java/com/google/devtools/build/skyframe/SequentialBuildDriver.java
@@ -32,8 +32,9 @@
@Override
public <T extends SkyValue> EvaluationResult<T> evaluate(
- Iterable<SkyKey> roots, boolean keepGoing, int numThreads, ExtendedEventHandler reporter)
- throws InterruptedException {
+ Iterable<? extends SkyKey> roots, boolean keepGoing, int numThreads,
+ ExtendedEventHandler reporter)
+ throws InterruptedException {
try {
return memoizingEvaluator.evaluate(roots, curVersion, keepGoing, numThreads, reporter);
} finally {
diff --git a/src/main/java/com/google/devtools/build/skyframe/SkyFunction.java b/src/main/java/com/google/devtools/build/skyframe/SkyFunction.java
index ee1d93c..66e9408 100644
--- a/src/main/java/com/google/devtools/build/skyframe/SkyFunction.java
+++ b/src/main/java/com/google/devtools/build/skyframe/SkyFunction.java
@@ -210,29 +210,30 @@
* already evaluated with an error in the specified set of {@link Exception} types.
*/
<E extends Exception> Map<SkyKey, ValueOrException<E>> getValuesOrThrow(
- Iterable<SkyKey> depKeys, Class<E> exceptionClass) throws InterruptedException;
+ Iterable<? extends SkyKey> depKeys, Class<E> exceptionClass) throws InterruptedException;
<E1 extends Exception, E2 extends Exception>
Map<SkyKey, ValueOrException2<E1, E2>> getValuesOrThrow(
- Iterable<SkyKey> depKeys, Class<E1> exceptionClass1, Class<E2> exceptionClass2)
- throws InterruptedException;
+ Iterable<? extends SkyKey> depKeys, Class<E1> exceptionClass1,
+ Class<E2> exceptionClass2)
+ throws InterruptedException;
<E1 extends Exception, E2 extends Exception, E3 extends Exception>
Map<SkyKey, ValueOrException3<E1, E2, E3>> getValuesOrThrow(
- Iterable<SkyKey> depKeys,
+ Iterable<? extends SkyKey> depKeys,
Class<E1> exceptionClass1,
Class<E2> exceptionClass2,
Class<E3> exceptionClass3)
- throws InterruptedException;
+ throws InterruptedException;
<E1 extends Exception, E2 extends Exception, E3 extends Exception, E4 extends Exception>
Map<SkyKey, ValueOrException4<E1, E2, E3, E4>> getValuesOrThrow(
- Iterable<SkyKey> depKeys,
+ Iterable<? extends SkyKey> depKeys,
Class<E1> exceptionClass1,
Class<E2> exceptionClass2,
Class<E3> exceptionClass3,
Class<E4> exceptionClass4)
- throws InterruptedException;
+ throws InterruptedException;
<
E1 extends Exception,
@@ -241,13 +242,13 @@
E4 extends Exception,
E5 extends Exception>
Map<SkyKey, ValueOrException5<E1, E2, E3, E4, E5>> getValuesOrThrow(
- Iterable<SkyKey> depKeys,
+ Iterable<? extends SkyKey> depKeys,
Class<E1> exceptionClass1,
Class<E2> exceptionClass2,
Class<E3> exceptionClass3,
Class<E4> exceptionClass4,
Class<E5> exceptionClass5)
- throws InterruptedException;
+ throws InterruptedException;
/**
* Returns whether there was a previous getValue[s][OrThrow] that indicated a missing
diff --git a/src/main/java/com/google/devtools/build/skyframe/SkyFunctionEnvironment.java b/src/main/java/com/google/devtools/build/skyframe/SkyFunctionEnvironment.java
index fb51fdd..8735f34 100644
--- a/src/main/java/com/google/devtools/build/skyframe/SkyFunctionEnvironment.java
+++ b/src/main/java/com/google/devtools/build/skyframe/SkyFunctionEnvironment.java
@@ -270,7 +270,7 @@
this.errorInfo = Preconditions.checkNotNull(errorInfo, skyKey);
}
- private Map<SkyKey, SkyValue> getValuesMaybeFromError(Iterable<SkyKey> keys)
+ private Map<SkyKey, SkyValue> getValuesMaybeFromError(Iterable<? extends SkyKey> keys)
throws InterruptedException {
// Use a HashMap, not an ImmutableMap.Builder, because we have not yet deduplicated these keys
// and ImmutableMap.Builder does not tolerate duplicates. The map will be thrown away
@@ -341,7 +341,7 @@
@Override
protected Map<SkyKey, ValueOrUntypedException> getValueOrUntypedExceptions(
- Iterable<SkyKey> depKeys) throws InterruptedException {
+ Iterable<? extends SkyKey> depKeys) throws InterruptedException {
checkActive();
Map<SkyKey, SkyValue> values = getValuesMaybeFromError(depKeys);
for (Map.Entry<SkyKey, SkyValue> depEntry : values.entrySet()) {
@@ -449,13 +449,13 @@
E4 extends Exception,
E5 extends Exception>
Map<SkyKey, ValueOrException5<E1, E2, E3, E4, E5>> getValuesOrThrow(
- Iterable<SkyKey> depKeys,
+ Iterable<? extends SkyKey> depKeys,
Class<E1> exceptionClass1,
Class<E2> exceptionClass2,
Class<E3> exceptionClass3,
Class<E4> exceptionClass4,
Class<E5> exceptionClass5)
- throws InterruptedException {
+ throws InterruptedException {
newlyRequestedDeps.startGroup();
Map<SkyKey, ValueOrException5<E1, E2, E3, E4, E5>> result =
super.getValuesOrThrow(