Remove not-quite necessary serialization bits
What we really are doing here is formatting.
--
MOS_MIGRATED_REVID=127481183
diff --git a/src/main/java/com/google/devtools/build/lib/packages/ProtoUtils.java b/src/main/java/com/google/devtools/build/lib/packages/ProtoUtils.java
index ceb0c8b..c34ad2e 100644
--- a/src/main/java/com/google/devtools/build/lib/packages/ProtoUtils.java
+++ b/src/main/java/com/google/devtools/build/lib/packages/ProtoUtils.java
@@ -34,31 +34,16 @@
import static com.google.devtools.build.lib.syntax.Type.STRING_LIST;
import static com.google.devtools.build.lib.syntax.Type.STRING_LIST_DICT;
-import com.google.common.base.Optional;
-import com.google.common.base.Predicates;
import com.google.common.collect.ImmutableMap;
-import com.google.common.collect.ImmutableSet;
-import com.google.common.collect.ImmutableSetMultimap;
-import com.google.common.collect.Iterables;
-import com.google.common.collect.Sets;
-import com.google.devtools.build.lib.query2.proto.proto2api.Build;
import com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute.Discriminator;
import com.google.devtools.build.lib.syntax.Type;
import com.google.devtools.build.lib.util.Preconditions;
-import java.util.Set;
-
-/**
- * Shared code used in proto buffer output for rules and rule classes.
- */
+/** Shared code used in proto buffer output for rules and rule classes. */
public class ProtoUtils {
/**
* This map contains all attribute types that are recognized by the protocol
* output formatter.
- *
- * <p>If you modify this map, please ensure that {@link #getTypeFromDiscriminator} can still
- * resolve a {@link Discriminator} value to exactly one {@link Type} (using an optional nodep
- * hint, as described below).
*/
static final ImmutableMap<Type<?>, Discriminator> TYPE_MAP =
new ImmutableMap.Builder<Type<?>, Discriminator>()
@@ -85,90 +70,8 @@
.put(STRING_DICT_UNARY, Discriminator.STRING_DICT_UNARY)
.build();
- static final ImmutableSet<Type<?>> NODEP_TYPES = ImmutableSet.of(NODEP_LABEL, NODEP_LABEL_LIST);
-
- static final ImmutableSetMultimap<Discriminator, Type<?>> INVERSE_TYPE_MAP =
- TYPE_MAP.asMultimap().inverse();
-
/** Returns the {@link Discriminator} value corresponding to the provided {@link Type}. */
public static Discriminator getDiscriminatorFromType(Type<?> type) {
- Preconditions.checkArgument(TYPE_MAP.containsKey(type), type);
- return TYPE_MAP.get(type);
- }
-
- /** Returns the {@link Type} associated with an {@link Build.Attribute}. */
- static Type<?> getTypeFromAttributePb(
- Build.Attribute attrPb, String ruleClassName, String attrName) {
- Optional<Boolean> nodepHint =
- attrPb.hasNodep() ? Optional.of(attrPb.getNodep()) : Optional.<Boolean>absent();
- Discriminator attrPbDiscriminator = attrPb.getType();
- boolean isSelectorList = attrPbDiscriminator.equals(Discriminator.SELECTOR_LIST);
- return getTypeFromDiscriminator(
- isSelectorList ? attrPb.getSelectorList().getType() : attrPbDiscriminator,
- nodepHint,
- ruleClassName,
- attrName);
- }
-
- /**
- * Returns the set of {@link Type}s associated with a {@link Discriminator} value.
- *
- * <p>The set will contain more than one {@link Type} when {@param discriminator} is either
- * {@link Discriminator#STRING} or {@link Discriminator#STRING_LIST}, because each of them
- * corresponds with two {@link Type} values. A nodeps hint is needed to determine which {@link
- * Type} applies.
- */
- private static ImmutableSet<Type<?>> getTypesFromDiscriminator(Discriminator discriminator) {
- Preconditions.checkArgument(INVERSE_TYPE_MAP.containsKey(discriminator), discriminator);
- return INVERSE_TYPE_MAP.get(discriminator);
- }
-
- /**
- * Returns the {@link Type} associated with a {@link Discriminator} value, given an optional
- * nodeps hint.
- */
- private static Type<?> getTypeFromDiscriminator(
- Discriminator discriminator,
- Optional<Boolean> nodeps,
- String ruleClassName,
- String attrName) {
- Preconditions.checkArgument(INVERSE_TYPE_MAP.containsKey(discriminator), discriminator);
- ImmutableSet<Type<?>> possibleTypes = ProtoUtils.getTypesFromDiscriminator(discriminator);
- Type<?> preciseType;
- if (possibleTypes.size() == 1) {
- preciseType = Iterables.getOnlyElement(possibleTypes);
- } else {
- // If there is more than one possible type associated with the discriminator, then the
- // discriminator must be either Discriminator.STRING or Discriminator.STRING_LIST.
- //
- // If it is Discriminator.STRING, then its possible Type<?>s are {NODEP_LABEL, STRING}. The
- // nodeps hint must be present in order to distinguish between them. If nodeps is true,
- // then the Type<?> must be NODEP_LABEL, and if false, it must be STRING.
- //
- // A similar relation holds for the Discriminator value STRING_LIST, and its possible
- // Type<?>s {NODEP_LABEL_LIST, STRING_LIST}.
-
- Preconditions.checkArgument(nodeps.isPresent(),
- "Nodeps hint is required when discriminator is associated with more than one type."
- + " Discriminator: \"%s\", Rule class: \"%s\", Attr: \"%s\"", discriminator,
- ruleClassName, attrName);
- if (nodeps.get()) {
- Set<Type<?>> nodepType = Sets.filter(possibleTypes, Predicates.in(NODEP_TYPES));
- Preconditions.checkState(nodepType.size() == 1,
- "There should be exactly one NODEP type associated with discriminator \"%s\""
- + ", but found these: %s. Rule class: \"%s\", Attr: \"%s\"", discriminator,
- nodepType, ruleClassName, attrName);
- preciseType = Iterables.getOnlyElement(nodepType);
- } else {
- Set<Type<?>> notNodepType =
- Sets.filter(possibleTypes, Predicates.not(Predicates.in(NODEP_TYPES)));
- Preconditions.checkState(notNodepType.size() == 1,
- "There should be exactly one non-NODEP type associated with discriminator \"%s\""
- + ", but found these: %s. Rule class: \"%s\", Attr: \"%s\"", discriminator,
- notNodepType, ruleClassName, attrName);
- preciseType = Iterables.getOnlyElement(notNodepType);
- }
- }
- return preciseType;
+ return Preconditions.checkNotNull(TYPE_MAP.get(type), "No discriminator found for %s", type);
}
}