Make a bunch more stuff serializable, especially anonymous classes and lambdas. Give a bit more information in JavaSerializableCodec when serialization fails on an anonymous class or lambda.
PiperOrigin-RevId: 190472245
diff --git a/src/main/java/com/google/devtools/build/lib/packages/Attribute.java b/src/main/java/com/google/devtools/build/lib/packages/Attribute.java
index 67b383d..933790f 100644
--- a/src/main/java/com/google/devtools/build/lib/packages/Attribute.java
+++ b/src/main/java/com/google/devtools/build/lib/packages/Attribute.java
@@ -287,10 +287,12 @@
* Implementation of {@link SplitTransitionProvider} that returns a single {@link SplitTransition}
* regardless of the originating rule.
*/
- private static class BasicSplitTransitionProvider implements SplitTransitionProvider {
-
+ @AutoCodec.VisibleForSerialization
+ @AutoCodec
+ static class BasicSplitTransitionProvider implements SplitTransitionProvider {
private final SplitTransition splitTransition;
+ @AutoCodec.VisibleForSerialization
BasicSplitTransitionProvider(SplitTransition splitTransition) {
this.splitTransition = splitTransition;
}
@@ -1599,10 +1601,10 @@
}
}
- private static class SimpleLateBoundDefault<FragmentT, ValueT>
+ @AutoCodec.VisibleForSerialization
+ static class SimpleLateBoundDefault<FragmentT, ValueT>
extends LateBoundDefault<FragmentT, ValueT> {
-
- private final Resolver<FragmentT, ValueT> resolver;
+ @AutoCodec.VisibleForSerialization protected final Resolver<FragmentT, ValueT> resolver;
private SimpleLateBoundDefault(boolean useHostConfiguration,
Class<FragmentT> fragmentClass,
@@ -1745,9 +1747,11 @@
}
/** A {@link LateBoundDefault} for a {@link Label}. */
+ @AutoCodec
public static class LabelLateBoundDefault<FragmentT>
extends SimpleLateBoundDefault<FragmentT, Label> {
- private LabelLateBoundDefault(
+ @AutoCodec.VisibleForSerialization
+ LabelLateBoundDefault(
boolean useHostConfiguration,
Class<FragmentT> fragmentClass,
Label defaultValue,
@@ -1830,9 +1834,11 @@
}
/** A {@link LateBoundDefault} for a {@link List} of {@link Label} objects. */
+ @AutoCodec
public static class LabelListLateBoundDefault<FragmentT>
extends SimpleLateBoundDefault<FragmentT, List<Label>> {
- private LabelListLateBoundDefault(
+ @AutoCodec.VisibleForSerialization
+ LabelListLateBoundDefault(
boolean useHostConfiguration,
Class<FragmentT> fragmentClass,
Resolver<FragmentT, List<Label>> resolver) {