Make most of Attribute DynamicCodec'ed, rather than use AutoCodec. This is a general clean-up, but also I'm getting a bizarre test failure from the @AutoCodec annotation and it goes away when I remove it.
PiperOrigin-RevId: 251715454
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 ac63988..0f7cfe3 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
@@ -71,12 +71,11 @@
* </code> may share many attributes in common).
*/
@Immutable
-@AutoCodec
public final class Attribute implements Comparable<Attribute> {
public static final RuleClassNamePredicate ANY_RULE = RuleClassNamePredicate.unspecified();
- public static final RuleClassNamePredicate NO_RULE = RuleClassNamePredicate.only();
+ private static final RuleClassNamePredicate NO_RULE = RuleClassNamePredicate.only();
/** Wraps the information necessary to construct an Aspect. */
@VisibleForSerialization
@@ -84,7 +83,7 @@
protected final C aspectClass;
protected final Function<Rule, AspectParameters> parametersExtractor;
- protected RuleAspect(C aspectClass, Function<Rule, AspectParameters> parametersExtractor) {
+ private RuleAspect(C aspectClass, Function<Rule, AspectParameters> parametersExtractor) {
this.aspectClass = aspectClass;
this.parametersExtractor = parametersExtractor;
}
@@ -105,8 +104,8 @@
}
private static class NativeRuleAspect extends RuleAspect<NativeAspectClass> {
- public NativeRuleAspect(NativeAspectClass aspectClass,
- Function<Rule, AspectParameters> parametersExtractor) {
+ NativeRuleAspect(
+ NativeAspectClass aspectClass, Function<Rule, AspectParameters> parametersExtractor) {
super(aspectClass, parametersExtractor);
}
@@ -117,11 +116,13 @@
}
}
+ @VisibleForSerialization
@AutoCodec
static class SkylarkRuleAspect extends RuleAspect<SkylarkAspectClass> {
private final SkylarkDefinedAspect aspect;
- public SkylarkRuleAspect(SkylarkDefinedAspect aspect) {
+ @VisibleForSerialization
+ SkylarkRuleAspect(SkylarkDefinedAspect aspect) {
super(aspect.getAspectClass(), aspect.getDefaultParametersExtractor());
this.aspect = aspect;
}
@@ -142,7 +143,7 @@
private static class PredefinedRuleAspect extends RuleAspect<AspectClass> {
private final Aspect aspect;
- public PredefinedRuleAspect(Aspect aspect) {
+ PredefinedRuleAspect(Aspect aspect) {
super(aspect.getAspectClass(), null);
this.aspect = aspect;
}
@@ -153,8 +154,7 @@
}
}
- @VisibleForSerialization
- enum PropertyFlag {
+ private enum PropertyFlag {
MANDATORY,
EXECUTABLE,
UNDOCUMENTED,
@@ -274,17 +274,9 @@
String checkValid(Rule from, Rule to);
}
- @AutoCodec
- public static final ValidityPredicate ANY_EDGE =
- new ValidityPredicate() {
- @Override
- public String checkValid(Rule from, Rule to) {
- return null;
- }
- };
+ @AutoCodec public static final ValidityPredicate ANY_EDGE = (from, to) -> null;
/** A predicate class to check if the value of the attribute comes from a predefined set. */
- @AutoCodec
public static class AllowedValueSet implements PredicateWithMessage<Object> {
private final Set<Object> allowedValues;
@@ -299,12 +291,6 @@
allowedValues = ImmutableSet.copyOf(values);
}
- @AutoCodec.Instantiator
- @VisibleForSerialization
- AllowedValueSet(Set<Object> allowedValues) {
- this.allowedValues = allowedValues;
- }
-
@Override
public boolean apply(Object input) {
return allowedValues.contains(input);
@@ -344,7 +330,6 @@
}
/** A factory to generate {@link Attribute} instances. */
- @AutoCodec
public static class ImmutableAttributeFactory {
private final Type<?> type;
private final String doc;
@@ -362,8 +347,7 @@
private final RequiredProviders requiredProviders;
private final ImmutableList<RuleAspect<?>> aspects;
- @AutoCodec.VisibleForSerialization
- ImmutableAttributeFactory(
+ private ImmutableAttributeFactory(
Type<?> type,
String doc,
ImmutableSet<PropertyFlag> propertyFlags,
@@ -1398,7 +1382,6 @@
* calling {@link #computePossibleValues}, which returns a {@link SkylarkComputedDefault} that
* contains a lookup table.
*/
- @AutoCodec
public static final class SkylarkComputedDefaultTemplate {
private final Type<?> type;
private final SkylarkCallbackFunction callback;
@@ -1542,7 +1525,6 @@
* {@link #getPossibleValues(Type, Rule)} and {@link #getDefault(AttributeMap)} do lookups in that
* table.
*/
- @AutoCodec
static final class SkylarkComputedDefault extends ComputedDefault {
private final List<Type<?>> dependencyTypes;
@@ -1596,10 +1578,9 @@
}
}
- @AutoCodec.VisibleForSerialization
static class SimpleLateBoundDefault<FragmentT, ValueT>
extends LateBoundDefault<FragmentT, ValueT> {
- @AutoCodec.VisibleForSerialization protected final Resolver<FragmentT, ValueT> resolver;
+ private final Resolver<FragmentT, ValueT> resolver;
private SimpleLateBoundDefault(boolean useHostConfiguration,
Class<FragmentT> fragmentClass,
@@ -1731,7 +1712,9 @@
}
}
- private static class AlwaysNullLateBoundDefault extends SimpleLateBoundDefault<Void, Void> {
+ @AutoCodec.VisibleForSerialization
+ static class AlwaysNullLateBoundDefault extends SimpleLateBoundDefault<Void, Void> {
+ @AutoCodec @AutoCodec.VisibleForSerialization
static final AlwaysNullLateBoundDefault INSTANCE = new AlwaysNullLateBoundDefault();
private AlwaysNullLateBoundDefault() {
@@ -1740,10 +1723,9 @@
}
/** A {@link LateBoundDefault} for a {@link Label}. */
- @AutoCodec
public static class LabelLateBoundDefault<FragmentT>
extends SimpleLateBoundDefault<FragmentT, Label> {
- @AutoCodec.VisibleForSerialization
+ @VisibleForTesting
protected LabelLateBoundDefault(
boolean useHostConfiguration,
Class<FragmentT> fragmentClass,
@@ -1827,11 +1809,9 @@
}
/** A {@link LateBoundDefault} for a {@link List} of {@link Label} objects. */
- @AutoCodec
public static class LabelListLateBoundDefault<FragmentT>
extends SimpleLateBoundDefault<FragmentT, List<Label>> {
- @AutoCodec.VisibleForSerialization
- LabelListLateBoundDefault(
+ private LabelListLateBoundDefault(
boolean useHostConfiguration,
Class<FragmentT> fragmentClass,
Resolver<FragmentT, List<Label>> resolver) {
@@ -1935,7 +1915,6 @@
* @param transitionFactory the configuration transition for this attribute (which must be of type
* LABEL, LABEL_LIST, NODEP_LABEL or NODEP_LABEL_LIST).
*/
- @VisibleForSerialization
Attribute(
String name,
String doc,