aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build/lib/skyframe/TransitiveTraversalValue.java
diff options
context:
space:
mode:
authorGravatar Googler <noreply@google.com>2017-05-16 05:25:49 +0200
committerGravatar Dmitry Lomov <dslomov@google.com>2017-05-16 15:24:46 +0200
commit7184b6f55a8cb72094a481d056fe89bc7be80c76 (patch)
tree1378cc258d8874356baac702c2b5960d90178588 /src/main/java/com/google/devtools/build/lib/skyframe/TransitiveTraversalValue.java
parent23004957a56d304106d5dbf0d6ea52ec10713b39 (diff)
Have TransitiveTraversalValues store kind of targets which have errors when computing TransitiveTraversalValues.
RELNOTES: None PiperOrigin-RevId: 156138657
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/skyframe/TransitiveTraversalValue.java')
-rw-r--r--src/main/java/com/google/devtools/build/lib/skyframe/TransitiveTraversalValue.java56
1 files changed, 35 insertions, 21 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/TransitiveTraversalValue.java b/src/main/java/com/google/devtools/build/lib/skyframe/TransitiveTraversalValue.java
index afc26d3568..4639868b76 100644
--- a/src/main/java/com/google/devtools/build/lib/skyframe/TransitiveTraversalValue.java
+++ b/src/main/java/com/google/devtools/build/lib/skyframe/TransitiveTraversalValue.java
@@ -13,6 +13,7 @@
// limitations under the License.
package com.google.devtools.build.lib.skyframe;
+import com.google.common.base.MoreObjects;
import com.google.devtools.build.lib.cmdline.Label;
import com.google.devtools.build.lib.concurrent.ThreadSafety.Immutable;
import com.google.devtools.build.lib.concurrent.ThreadSafety.ThreadSafe;
@@ -52,8 +53,16 @@ public abstract class TransitiveTraversalValue implements SkyValue {
private static final InternerWithPresenceCheck<TransitiveTraversalValue> VALUE_INTERNER =
new InternerWithPresenceCheck<>();
- static TransitiveTraversalValue unsuccessfulTransitiveTraversal(String firstErrorMessage) {
- return new TransitiveTraversalValueWithError(Preconditions.checkNotNull(firstErrorMessage));
+ private final String kind;
+
+ protected TransitiveTraversalValue(String kind) {
+ this.kind = Preconditions.checkNotNull(kind);
+ }
+
+ static TransitiveTraversalValue unsuccessfulTransitiveTraversal(
+ String firstErrorMessage, Target target) {
+ return new TransitiveTraversalValueWithError(
+ Preconditions.checkNotNull(firstErrorMessage), target.getTargetKind());
}
static TransitiveTraversalValue forTarget(Target target, @Nullable String firstErrorMessage) {
@@ -84,16 +93,16 @@ public abstract class TransitiveTraversalValue implements SkyValue {
return value;
}
} else {
- return new TransitiveTraversalValueWithError(firstErrorMessage);
+ return new TransitiveTraversalValueWithError(firstErrorMessage, target.getTargetKind());
}
}
public static TransitiveTraversalValue create(
- AdvertisedProviderSet providers, @Nullable String kind, @Nullable String firstErrorMessage) {
+ AdvertisedProviderSet providers, String kind, @Nullable String firstErrorMessage) {
TransitiveTraversalValue value =
firstErrorMessage == null
? new TransitiveTraversalValueWithoutError(providers, kind)
- : new TransitiveTraversalValueWithError(firstErrorMessage);
+ : new TransitiveTraversalValueWithError(firstErrorMessage, kind);
if (firstErrorMessage == null) {
TransitiveTraversalValue oldValue = VALUE_INTERNER.getCanonical(value);
return oldValue == null ? value : oldValue;
@@ -110,9 +119,10 @@ public abstract class TransitiveTraversalValue implements SkyValue {
*/
public abstract AdvertisedProviderSet getProviders();
- /** Returns the target kind, if any. */
- @Nullable
- public abstract String getKind();
+ /** Returns the target kind. */
+ public String getKind() {
+ return kind;
+ }
/**
* Returns the first error message, if any, from loading the target and its transitive
@@ -149,12 +159,11 @@ public abstract class TransitiveTraversalValue implements SkyValue {
/** A transitive target reference without error. */
public static final class TransitiveTraversalValueWithoutError extends TransitiveTraversalValue {
private final AdvertisedProviderSet advertisedProviders;
- @Nullable private final String kind;
private TransitiveTraversalValueWithoutError(
AdvertisedProviderSet providers, @Nullable String kind) {
+ super(kind);
this.advertisedProviders = Preconditions.checkNotNull(providers);
- this.kind = kind;
}
@Override
@@ -169,14 +178,16 @@ public abstract class TransitiveTraversalValue implements SkyValue {
@Override
@Nullable
- public String getKind() {
- return kind;
+ public String getFirstErrorMessage() {
+ return null;
}
@Override
- @Nullable
- public String getFirstErrorMessage() {
- return null;
+ public String toString() {
+ return MoreObjects.toStringHelper(this)
+ .add("kind", getKind())
+ .add("providers", advertisedProviders)
+ .toString();
}
}
@@ -184,7 +195,8 @@ public abstract class TransitiveTraversalValue implements SkyValue {
public static final class TransitiveTraversalValueWithError extends TransitiveTraversalValue {
private final String firstErrorMessage;
- private TransitiveTraversalValueWithError(String firstErrorMessage) {
+ private TransitiveTraversalValueWithError(String firstErrorMessage, String kind) {
+ super(kind);
this.firstErrorMessage =
StringCanonicalizer.intern(Preconditions.checkNotNull(firstErrorMessage));
}
@@ -201,14 +213,16 @@ public abstract class TransitiveTraversalValue implements SkyValue {
@Override
@Nullable
- public String getKind() {
- return null;
+ public String getFirstErrorMessage() {
+ return firstErrorMessage;
}
@Override
- @Nullable
- public String getFirstErrorMessage() {
- return firstErrorMessage;
+ public String toString() {
+ return MoreObjects.toStringHelper(this)
+ .add("error", firstErrorMessage)
+ .add("kind", getKind())
+ .toString();
}
}
}