diff options
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/syntax/SelectorList.java')
-rw-r--r-- | src/main/java/com/google/devtools/build/lib/syntax/SelectorList.java | 31 |
1 files changed, 27 insertions, 4 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/syntax/SelectorList.java b/src/main/java/com/google/devtools/build/lib/syntax/SelectorList.java index 244d203c8f..f70a49884f 100644 --- a/src/main/java/com/google/devtools/build/lib/syntax/SelectorList.java +++ b/src/main/java/com/google/devtools/build/lib/syntax/SelectorList.java @@ -17,10 +17,12 @@ import com.google.common.base.Preconditions; import com.google.common.collect.ImmutableList; import com.google.common.collect.Iterables; import com.google.devtools.build.lib.events.Location; +import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec; import com.google.devtools.build.lib.skylarkinterface.SkylarkModule; import com.google.devtools.build.lib.skylarkinterface.SkylarkPrinter; import com.google.devtools.build.lib.skylarkinterface.SkylarkValue; import java.util.List; +import java.util.Objects; /** * An attribute value consisting of a concatenation of native types and selects, e.g: @@ -39,9 +41,12 @@ import java.util.List; * ) * </pre> */ -@SkylarkModule(name = "select", - doc = "A selector between configuration-dependent entities.", - documented = false) +@SkylarkModule( + name = "select", + doc = "A selector between configuration-dependent entities.", + documented = false +) +@AutoCodec public final class SelectorList implements SkylarkValue { // TODO(build-team): Selectors are currently split between .packages and .syntax . They should // really all be in .packages, but then we'd need to figure out a way how to extend binary @@ -49,7 +54,8 @@ public final class SelectorList implements SkylarkValue { private final Class<?> type; private final List<Object> elements; - private SelectorList(Class<?> type, List<Object> elements) { + @AutoCodec.VisibleForSerialization + SelectorList(Class<?> type, List<Object> elements) { this.type = type; this.elements = elements; } @@ -167,4 +173,21 @@ public final class SelectorList implements SkylarkValue { public void repr(SkylarkPrinter printer) { printer.printList(elements, "", " + ", "", null); } + + @Override + public int hashCode() { + return Objects.hash(type, elements); + } + + @Override + public boolean equals(Object other) { + if (this == other) { + return true; + } + if (!(other instanceof SelectorList)) { + return false; + } + SelectorList that = (SelectorList) other; + return Objects.equals(this.type, that.type) && Objects.equals(this.elements, that.elements); + } } |