diff options
Diffstat (limited to 'src')
5 files changed, 103 insertions, 100 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/collect/CollectionUtils.java b/src/main/java/com/google/devtools/build/lib/collect/CollectionUtils.java index 55c1cad13b..e76666b241 100644 --- a/src/main/java/com/google/devtools/build/lib/collect/CollectionUtils.java +++ b/src/main/java/com/google/devtools/build/lib/collect/CollectionUtils.java @@ -95,7 +95,7 @@ public final class CollectionUtils { * @param input some collection. * @return the set of repeated elements. May return an empty set, but never null. */ - public static <T> Set<T> duplicatedElementsOf(Collection<T> input) { + public static <T> Set<T> duplicatedElementsOf(Iterable<T> input) { Set<T> duplicates = new HashSet<>(); Set<T> elementSet = new HashSet<>(); for (T el : input) { diff --git a/src/main/java/com/google/devtools/build/lib/packages/AbstractAttributeMapper.java b/src/main/java/com/google/devtools/build/lib/packages/AbstractAttributeMapper.java index 931bcf9d96..373d935894 100644 --- a/src/main/java/com/google/devtools/build/lib/packages/AbstractAttributeMapper.java +++ b/src/main/java/com/google/devtools/build/lib/packages/AbstractAttributeMapper.java @@ -15,6 +15,7 @@ package com.google.devtools.build.lib.packages; import com.google.common.annotations.VisibleForTesting; import com.google.common.collect.ImmutableList; +import com.google.common.collect.Iterables; import com.google.devtools.build.lib.syntax.Label; import com.google.devtools.build.lib.vfs.PathFragment; @@ -157,7 +158,7 @@ public abstract class AbstractAttributeMapper implements AttributeMap { Type<?> type = attribute.getType(); Object value = get(attribute.getName(), type); if (value != null) { // null values are particularly possible for computed defaults. - for (Label label : type.getLabels(value)) { + for (Label label : extractLabels(type, value)) { Label absoluteLabel; if (attribute.isImplicit() || attribute.isLateBound() || !attributes.isAttributeValueExplicitlySpecified(attribute)) { @@ -240,4 +241,8 @@ public abstract class AbstractAttributeMapper implements AttributeMap { Attribute attribute = ruleClass.getAttributeByNameMaybe(attrName); return attribute != null && attribute.getType() == type; } + + protected static Iterable<Label> extractLabels(Type type, Object value) { + return Iterables.filter(type.flatten(value), Label.class); + } } diff --git a/src/main/java/com/google/devtools/build/lib/packages/AggregatingAttributeMapper.java b/src/main/java/com/google/devtools/build/lib/packages/AggregatingAttributeMapper.java index 386e651df7..00311702e6 100644 --- a/src/main/java/com/google/devtools/build/lib/packages/AggregatingAttributeMapper.java +++ b/src/main/java/com/google/devtools/build/lib/packages/AggregatingAttributeMapper.java @@ -18,11 +18,11 @@ import com.google.common.base.Verify; import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableMap; import com.google.common.collect.ImmutableSet; +import com.google.common.collect.Iterables; import com.google.devtools.build.lib.collect.CollectionUtils; import com.google.devtools.build.lib.syntax.Label; import java.util.ArrayList; -import java.util.Collection; import java.util.HashMap; import java.util.LinkedHashSet; import java.util.LinkedList; @@ -87,7 +87,7 @@ public class AggregatingAttributeMapper extends AbstractAttributeMapper { // (computed) values and look for labels. for (Object value : visitAttribute(attribute.getName(), attribute.getType())) { if (value != null) { - for (Label label : type.getLabels(value)) { + for (Label label : extractLabels(type, value)) { observer.acceptLabelAttribute(label, attribute); } } @@ -101,7 +101,7 @@ public class AggregatingAttributeMapper extends AbstractAttributeMapper { if (includeSelectKeys && !Type.Selector.isReservedLabel(selectorEntry.getKey())) { observer.acceptLabelAttribute(selectorEntry.getKey(), attribute); } - for (Label value : type.getLabels(selectorEntry.getValue())) { + for (Label value : extractLabels(type, selectorEntry.getValue())) { observer.acceptLabelAttribute(value, attribute); } } @@ -146,7 +146,7 @@ public class AggregatingAttributeMapper extends AbstractAttributeMapper { for (Object value : visitAttribute(attrName, attrType)) { if (value != null) { duplicates.addAll(CollectionUtils.duplicatedElementsOf( - ImmutableList.copyOf(attrType.getLabels(value)))); + ImmutableList.copyOf(extractLabels(attrType, value)))); } } } else { @@ -161,10 +161,10 @@ public class AggregatingAttributeMapper extends AbstractAttributeMapper { // they're in different selector paths (since only one path can actually get chosen). Set<Label> selectorLabels = new LinkedHashSet<>(); for (Object selectorValue : selector.getEntries().values()) { - Collection<Label> labelsInSelectorValue = attrType.getLabels(selectorValue); + Iterable<Label> labelsInSelectorValue = extractLabels(attrType, selectorValue); // Duplicates within a single path are not okay. duplicates.addAll(CollectionUtils.duplicatedElementsOf(labelsInSelectorValue)); - selectorLabels.addAll(labelsInSelectorValue); + Iterables.addAll(selectorLabels, labelsInSelectorValue); } combinedLabels.addAll(selectorLabels); } diff --git a/src/main/java/com/google/devtools/build/lib/packages/Type.java b/src/main/java/com/google/devtools/build/lib/packages/Type.java index fa2ce679b8..2c7c706560 100644 --- a/src/main/java/com/google/devtools/build/lib/packages/Type.java +++ b/src/main/java/com/google/devtools/build/lib/packages/Type.java @@ -81,17 +81,17 @@ public abstract class Type<T> { * @param what a string description of what x is for; should be included in * any exception thrown. Grammatically, must describe a syntactic * construct, e.g. "attribute 'srcs' of rule foo". - * @param currentRule the label of the current BUILD rule; must be non-null if resolution of + * @param context the label of the current BUILD rule; must be non-null if resolution of * package-relative label strings is required * @throws ConversionException if there was a problem performing the type conversion */ - public abstract T convert(Object x, String what, @Nullable Label currentRule) + public abstract T convert(Object x, String what, @Nullable Object context) throws ConversionException; // TODO(bazel-team): Check external calls (e.g. in PackageFactory), verify they always want // this over selectableConvert. /** - * Equivalent to {@link #convert(Object, String, Label)} where the label is {@code null}. + * Equivalent to {@link #convert(Object, String, Object)} where the label is {@code null}. * Useful for converting values to types that do not involve the type {@code LABEL} * and hence do not require the label of the current package. */ @@ -100,25 +100,25 @@ public abstract class Type<T> { } /** - * Like {@link #convert(Object, String, Label)}, but converts skylark {@code None} + * Like {@link #convert(Object, String, Object)}, but converts skylark {@code None} * to given {@code defaultValue}. */ @Nullable public final T convertOptional(Object x, - String what, @Nullable Label currentRule, T defaultValue) + String what, @Nullable Object context, T defaultValue) throws ConversionException { if (EvalUtils.isNullOrNone(x)) { return defaultValue; } - return convert(x, what, currentRule); + return convert(x, what, context); } /** - * Like {@link #convert(Object, String, Label)}, but converts skylark {@code None} + * Like {@link #convert(Object, String, Object)}, but converts skylark {@code None} * to java {@code null}. */ - @Nullable public final T convertOptional(Object x, String what, @Nullable Label currentRule) + @Nullable public final T convertOptional(Object x, String what, @Nullable Object context) throws ConversionException { - return convertOptional(x, what, currentRule, null); + return convertOptional(x, what, context, null); } /** @@ -136,14 +136,14 @@ public abstract class Type<T> { * * <p>The caller is responsible for casting the returned value appropriately. */ - public Object selectableConvert(Object x, String what, @Nullable Label currentRule) + public Object selectableConvert(Object x, String what, @Nullable Label context) throws ConversionException { if (x instanceof com.google.devtools.build.lib.syntax.SelectorList) { return new SelectorList<T>( ((com.google.devtools.build.lib.syntax.SelectorList) x).getElements(), - what, currentRule, this); + what, context, this); } else { - return convert(x, what, currentRule); + return convert(x, what, context); } } @@ -159,9 +159,7 @@ public abstract class Type<T> { public abstract T getDefaultValue(); /** - * If this type contains labels (e.g. it *is* a label or it's a collection of labels), - * returns a list of those labels for a value of that type. If this type doesn't - * contain labels, returns an empty list. + * Flatten the an instance of the type if the type is a composite one. * * <p>This is used to support reliable label visitation in * {@link AbstractAttributeMapper#visitLabels}. To preserve that reliability, every @@ -169,12 +167,12 @@ public abstract class Type<T> { * be careful about defining default instances in base types that get auto-inherited * by their children. Keep all definitions as explicit as possible. */ - public abstract Collection<Label> getLabels(Object value); + public abstract Collection<? extends Object> flatten(Object value); /** - * {@link #getLabels} return value for types that don't contain labels. + * {@link #flatten} return value for types that don't contain labels. */ - private static final Collection<Label> NO_LABELS_HERE = ImmutableList.of(); + private static final Collection<Object> NOT_COMPOSITE_TYPE = ImmutableList.of(); /** * Implementation of concatenation for this type (e.g. "val1 + val2"). Returns null to @@ -250,7 +248,7 @@ public abstract class Type<T> { } @Override - public DistributionType convert(Object x, String what, Label currentRule) { + public DistributionType convert(Object x, String what, Object context) { throw new UnsupportedOperationException(); } @@ -260,8 +258,8 @@ public abstract class Type<T> { } @Override - public Collection<Label> getLabels(Object value) { - return NO_LABELS_HERE; + public Collection<Object> flatten(Object value) { + return NOT_COMPOSITE_TYPE; } @Override @@ -405,8 +403,8 @@ public abstract class Type<T> { } @Override - public Collection<Label> getLabels(Object value) { - return NO_LABELS_HERE; + public Collection<Object> flatten(Object value) { + return NOT_COMPOSITE_TYPE; } @Override @@ -415,7 +413,7 @@ public abstract class Type<T> { } @Override - public Object convert(Object x, String what, Label currentRule) { + public Object convert(Object x, String what, Object context) { return x; } } @@ -432,8 +430,8 @@ public abstract class Type<T> { } @Override - public Collection<Label> getLabels(Object value) { - return NO_LABELS_HERE; + public Collection<Object> flatten(Object value) { + return NOT_COMPOSITE_TYPE; } @Override @@ -442,7 +440,7 @@ public abstract class Type<T> { } @Override - public Integer convert(Object x, String what, Label currentRule) + public Integer convert(Object x, String what, Object context) throws ConversionException { if (!(x instanceof Integer)) { throw new ConversionException(this, x, what); @@ -472,8 +470,8 @@ public abstract class Type<T> { } @Override - public Collection<Label> getLabels(Object value) { - return NO_LABELS_HERE; + public Collection<Object> flatten(Object value) { + return NOT_COMPOSITE_TYPE; } @Override @@ -483,12 +481,12 @@ public abstract class Type<T> { // Conversion to boolean must also tolerate integers of 0 and 1 only. @Override - public Boolean convert(Object x, String what, Label currentRule) + public Boolean convert(Object x, String what, Object context) throws ConversionException { if (x instanceof Boolean) { return (Boolean) x; } - Integer xAsInteger = INTEGER.convert(x, what, currentRule); + Integer xAsInteger = INTEGER.convert(x, what, context); if (xAsInteger == 0) { return false; } else if (xAsInteger == 1) { @@ -531,8 +529,8 @@ public abstract class Type<T> { } @Override - public Collection<Label> getLabels(Object value) { - return NO_LABELS_HERE; + public Collection<Object> flatten(Object value) { + return NOT_COMPOSITE_TYPE; } @Override @@ -542,7 +540,7 @@ public abstract class Type<T> { // Like BooleanType, this must handle integers as well. @Override - public TriState convert(Object x, String what, Label currentRule) + public TriState convert(Object x, String what, Object context) throws ConversionException { if (x instanceof TriState) { return (TriState) x; @@ -550,7 +548,7 @@ public abstract class Type<T> { if (x instanceof Boolean) { return ((Boolean) x) ? TriState.YES : TriState.NO; } - Integer xAsInteger = INTEGER.convert(x, what, currentRule); + Integer xAsInteger = INTEGER.convert(x, what, context); if (xAsInteger == -1) { return TriState.AUTO; } else if (xAsInteger == 1) { @@ -574,8 +572,8 @@ public abstract class Type<T> { } @Override - public Collection<Label> getLabels(Object value) { - return NO_LABELS_HERE; + public Collection<Object> flatten(Object value) { + return NOT_COMPOSITE_TYPE; } @Override @@ -584,7 +582,7 @@ public abstract class Type<T> { } @Override - public String convert(Object x, String what, Label currentRule) + public String convert(Object x, String what, Object context) throws ConversionException { if (!(x instanceof String)) { throw new ConversionException(this, x, what); @@ -617,7 +615,7 @@ public abstract class Type<T> { } @Override - public FilesetEntry convert(Object x, String what, Label currentRule) + public FilesetEntry convert(Object x, String what, Object context) throws ConversionException { if (!(x instanceof FilesetEntry)) { throw new ConversionException(this, x, what); @@ -636,7 +634,7 @@ public abstract class Type<T> { } @Override - public Collection<Label> getLabels(Object value) { + public Collection<? extends Object> flatten(Object value) { return cast(value).getLabels(); } } @@ -653,7 +651,7 @@ public abstract class Type<T> { } @Override - public Collection<Label> getLabels(Object value) { + public Collection<Label> flatten(Object value) { return ImmutableList.of(cast(value)); } @@ -663,14 +661,13 @@ public abstract class Type<T> { } @Override - public Label convert(Object x, String what, Label currentRule) + public Label convert(Object x, String what, Object context) throws ConversionException { if (x instanceof Label) { return (Label) x; } try { - return currentRule.getRelative( - STRING.convert(x, what, currentRule)); + return ((Label) context).getRelative(STRING.convert(x, what, context)); } catch (LabelSyntaxException e) { throw new ConversionException("invalid label '" + x + "' in " + what + ": " + e.getMessage()); @@ -690,7 +687,7 @@ public abstract class Type<T> { } @Override - public License convert(Object x, String what, Label currentRule) throws ConversionException { + public License convert(Object x, String what, Object context) throws ConversionException { try { List<String> licenseStrings = STRING_LIST.convert(x, what); return License.parseLicense(licenseStrings); @@ -705,8 +702,8 @@ public abstract class Type<T> { } @Override - public Collection<Label> getLabels(Object value) { - return NO_LABELS_HERE; + public Collection<Object> flatten(Object value) { + return NOT_COMPOSITE_TYPE; } @Override @@ -728,7 +725,7 @@ public abstract class Type<T> { } @Override - public Set<DistributionType> convert(Object x, String what, Label currentRule) + public Set<DistributionType> convert(Object x, String what, Object context) throws ConversionException { try { List<String> distribStrings = STRING_LIST.convert(x, what); @@ -744,8 +741,8 @@ public abstract class Type<T> { } @Override - public Collection<Label> getLabels(Object what) { - return NO_LABELS_HERE; + public Collection<Object> flatten(Object what) { + return NOT_COMPOSITE_TYPE; } @Override @@ -771,7 +768,7 @@ public abstract class Type<T> { } @Override - public Collection<Label> getLabels(Object value) { + public Collection<Label> flatten(Object value) { return ImmutableList.of(cast(value)); } @@ -781,25 +778,26 @@ public abstract class Type<T> { } @Override - public Label convert(Object x, String what, Label currentRule) + public Label convert(Object x, String what, Object context) throws ConversionException { String value; try { - value = STRING.convert(x, what, currentRule); + value = STRING.convert(x, what, context); } catch (ConversionException e) { throw new ConversionException(this, x, what); } try { - // Enforce value is relative to the currentRule. + // Enforce value is relative to the context. + Label currentRule = (Label) context; Label result = currentRule.getRelative(value); - if (!result.getPackageName().equals(currentRule.getPackageName())) { + if (!result.getPackageIdentifier().equals(currentRule.getPackageIdentifier())) { throw new ConversionException("label '" + value + "' is not in the current package"); } return result; } catch (LabelSyntaxException e) { throw new ConversionException( - "illegal output file name '" + value + "' in rule " + currentRule + ": " + "illegal output file name '" + value + "' in rule " + context + ": " + e.getMessage()); } } @@ -845,7 +843,7 @@ public abstract class Type<T> { } @Override - public Map<KeyT, ValueT> convert(Object x, String what, Label currentRule) + public Map<KeyT, ValueT> convert(Object x, String what, Object context) throws ConversionException { if (!(x instanceof Map<?, ?>)) { throw new ConversionException(String.format( @@ -856,8 +854,8 @@ public abstract class Type<T> { Map<?, ?> o = (Map<?, ?>) x; for (Entry<?, ?> elem : o.entrySet()) { result.put( - keyType.convert(elem.getKey(), "dict key element", currentRule), - valueType.convert(elem.getValue(), "dict value element", currentRule)); + keyType.convert(elem.getKey(), "dict key element", context), + valueType.convert(elem.getValue(), "dict value element", context)); } return ImmutableMap.copyOf(result); } @@ -868,13 +866,13 @@ public abstract class Type<T> { } @Override - public Collection<Label> getLabels(Object value) { - ImmutableList.Builder<Label> labels = ImmutableList.builder(); + public Collection<Object> flatten(Object value) { + ImmutableList.Builder<Object> result = ImmutableList.builder(); for (Map.Entry<KeyT, ValueT> entry : cast(value).entrySet()) { - labels.addAll(keyType.getLabels(entry.getKey())); - labels.addAll(valueType.getLabels(entry.getValue())); + result.addAll(keyType.flatten(entry.getKey())); + result.addAll(valueType.flatten(entry.getValue())); } - return labels.build(); + return result.build(); } } @@ -910,10 +908,10 @@ public abstract class Type<T> { } @Override - public Collection<Label> getLabels(Object value) { - ImmutableList.Builder<Label> labels = ImmutableList.builder(); + public Collection<Object> flatten(Object value) { + ImmutableList.Builder<Object> labels = ImmutableList.builder(); for (ElemT entry : cast(value)) { - labels.addAll(elemType.getLabels(entry)); + labels.addAll(elemType.flatten(entry)); } return labels.build(); } @@ -924,7 +922,7 @@ public abstract class Type<T> { } @Override - public List<ElemT> convert(Object x, String what, Label currentRule) + public List<ElemT> convert(Object x, String what, Object context) throws ConversionException { if (!(x instanceof Iterable<?>)) { throw new ConversionException(this, x, what); @@ -933,13 +931,13 @@ public abstract class Type<T> { Iterable<?> iterable = (Iterable<?>) x; List<ElemT> result = Lists.newArrayListWithExpectedSize(Iterables.size(iterable)); for (Object elem : iterable) { - ElemT converted = elemType.convert(elem, "element " + index + " of " + what, currentRule); + ElemT converted = elemType.convert(elem, "element " + index + " of " + what, context); if (converted != null) { result.add(converted); } else { // shouldn't happen but it does, rarely String message = "Converting a list with a null element: " - + "element " + index + " of " + what + " in " + currentRule; + + "element " + index + " of " + what + " in " + context; LoggingUtil.logToRemote(Level.WARNING, message, new ConversionException(message)); } @@ -992,7 +990,7 @@ public abstract class Type<T> { @Override @SuppressWarnings("unchecked") - public List<Object> convert(Object x, String what, Label currentRule) + public List<Object> convert(Object x, String what, Object context) throws ConversionException { if (x instanceof SkylarkList) { return ((SkylarkList) x).toList(); @@ -1038,7 +1036,7 @@ public abstract class Type<T> { public static final String DEFAULT_CONDITION_KEY = "//conditions:default"; @VisibleForTesting - Selector(Object x, String what, @Nullable Label currentRule, Type<T> originalType) + Selector(Object x, String what, @Nullable Label context, Type<T> originalType) throws ConversionException { Preconditions.checkState(x instanceof Map<?, ?>); @@ -1052,11 +1050,11 @@ public abstract class Type<T> { Map<Label, T> result = Maps.newLinkedHashMap(); boolean foundDefaultCondition = false; for (Entry<?, ?> entry : ((Map<?, ?>) x).entrySet()) { - Label key = LABEL.convert(entry.getKey(), what, currentRule); + Label key = LABEL.convert(entry.getKey(), what, context); if (key.equals(defaultConditionLabel)) { foundDefaultCondition = true; } - result.put(key, originalType.convert(entry.getValue(), what, currentRule)); + result.put(key, originalType.convert(entry.getValue(), what, context)); } map = ImmutableMap.copyOf(result); hasDefaultCondition = foundDefaultCondition; @@ -1110,7 +1108,7 @@ public abstract class Type<T> { private final List<Selector<T>> elements; @VisibleForTesting - SelectorList(List<Object> x, String what, @Nullable Label currentRule, + SelectorList(List<Object> x, String what, @Nullable Label context, Type<T> originalType) throws ConversionException { if (x.size() > 1 && originalType.concat(ImmutableList.<T>of()) == null) { throw new ConversionException( @@ -1121,11 +1119,11 @@ public abstract class Type<T> { for (Object elem : x) { if (elem instanceof SelectorValue) { builder.add(new Selector<T>(((SelectorValue) elem).getDictionary(), what, - currentRule, originalType)); + context, originalType)); } else { - T directValue = originalType.convert(elem, what, currentRule); + T directValue = originalType.convert(elem, what, context); builder.add(new Selector<T>(ImmutableMap.of(Selector.DEFAULT_CONDITION_KEY, directValue), - what, currentRule, originalType)); + what, context, originalType)); } } this.originalType = originalType; diff --git a/src/test/java/com/google/devtools/build/lib/packages/TypeTest.java b/src/test/java/com/google/devtools/build/lib/packages/TypeTest.java index 6604e6286f..baf0d0feea 100644 --- a/src/test/java/com/google/devtools/build/lib/packages/TypeTest.java +++ b/src/test/java/com/google/devtools/build/lib/packages/TypeTest.java @@ -59,7 +59,7 @@ public class TypeTest { public void testInteger() throws Exception { Object x = 3; assertEquals(x, Type.INTEGER.convert(x, null)); - assertThat(Type.INTEGER.getLabels(x)).isEmpty(); + assertThat(Type.INTEGER.flatten(x)).isEmpty(); } @Test @@ -91,7 +91,7 @@ public class TypeTest { public void testString() throws Exception { Object s = "foo"; assertEquals(s, Type.STRING.convert(s, null)); - assertThat(Type.STRING.getLabels(s)).isEmpty(); + assertThat(Type.STRING.flatten(s)).isEmpty(); } @Test @@ -114,7 +114,7 @@ public class TypeTest { assertTrue(Type.BOOLEAN.convert(myTrue, null)); assertFalse(Type.BOOLEAN.convert(false, null)); assertFalse(Type.BOOLEAN.convert(myFalse, null)); - assertThat(Type.BOOLEAN.getLabels(myTrue)).isEmpty(); + assertThat(Type.BOOLEAN.flatten(myTrue)).isEmpty(); } @Test @@ -151,7 +151,7 @@ public class TypeTest { assertEquals(TriState.YES, Type.TRISTATE.convert(TriState.YES, null)); assertEquals(TriState.NO, Type.TRISTATE.convert(TriState.NO, null)); assertEquals(TriState.AUTO, Type.TRISTATE.convert(TriState.AUTO, null)); - assertThat(Type.TRISTATE.getLabels(TriState.YES)).isEmpty(); + assertThat(Type.TRISTATE.flatten(TriState.YES)).isEmpty(); } @Test @@ -225,14 +225,14 @@ public class TypeTest { public void testLabel() throws Exception { Label label = Label.parseAbsolute("//foo:bar"); assertEquals(label, Type.LABEL.convert("//foo:bar", null, currentRule)); - assertThat(Type.LABEL.getLabels(label)).containsExactly(label); + assertThat(Type.LABEL.flatten(label)).containsExactly(label); } @Test public void testNodepLabel() throws Exception { Label label = Label.parseAbsolute("//foo:bar"); assertEquals(label, Type.NODEP_LABEL.convert("//foo:bar", null, currentRule)); - assertThat(Type.NODEP_LABEL.getLabels(label)).containsExactly(label); + assertThat(Type.NODEP_LABEL.flatten(label)).containsExactly(label); } @Test @@ -276,7 +276,7 @@ public class TypeTest { Type.STRING_LIST.convert(input, null); assertEquals(input, converted); assertNotSame(input, converted); - assertThat(Type.STRING_LIST.getLabels(input)).isEmpty(); + assertThat(Type.STRING_LIST.flatten(input)).isEmpty(); } @Test @@ -286,7 +286,7 @@ public class TypeTest { Map<String, String> converted = Type.STRING_DICT.convert(input, null); assertEquals(input, converted); assertNotSame(input, converted); - assertThat(Type.STRING_DICT.getLabels(converted)).isEmpty(); + assertThat(Type.STRING_DICT.flatten(converted)).isEmpty(); } @Test @@ -334,7 +334,7 @@ public class TypeTest { Label.parseAbsolute("//quux:wiz")); assertEquals(expected, converted); assertNotSame(expected, converted); - assertThat(Type.LABEL_LIST.getLabels(converted)).containsExactlyElementsIn(expected); + assertThat(Type.LABEL_LIST.flatten(converted)).containsExactlyElementsIn(expected); } @Test @@ -384,7 +384,7 @@ public class TypeTest { "wiz", Arrays.<Label>asList(bangLabel)); assertEquals(expected, converted); assertNotSame(expected, converted); - assertThat(Type.LABEL_LIST_DICT.getLabels(converted)).containsExactly(fooLabel, bangLabel); + assertThat(Type.LABEL_LIST_DICT.flatten(converted)).containsExactly(fooLabel, bangLabel); } @Test @@ -453,7 +453,7 @@ public class TypeTest { "wiz", Arrays.asList("bang")); assertEquals(expected, converted); assertNotSame(expected, converted); - assertThat(Type.STRING_LIST_DICT.getLabels(converted)).isEmpty(); + assertThat(Type.STRING_LIST_DICT.flatten(converted)).isEmpty(); } @Test @@ -507,7 +507,7 @@ public class TypeTest { "wiz", "bang"); assertEquals(expected, converted); assertNotSame(expected, converted); - assertThat(Type.STRING_DICT_UNARY.getLabels(converted)).isEmpty(); + assertThat(Type.STRING_DICT_UNARY.flatten(converted)).isEmpty(); } @Test @@ -567,7 +567,7 @@ public class TypeTest { FilesetEntry input = new FilesetEntry(srcDir, ImmutableList.of(entryLabel), null, null, null, null); assertEquals(input, Type.FILESET_ENTRY.convert(input, null, currentRule)); - assertThat(Type.FILESET_ENTRY.getLabels(input)).containsExactly(entryLabel); + assertThat(Type.FILESET_ENTRY.flatten(input)).containsExactly(entryLabel); } @Test @@ -579,7 +579,7 @@ public class TypeTest { new FilesetEntry(srcDir, ImmutableList.of(entry1Label), null, null, null, null), new FilesetEntry(srcDir, ImmutableList.of(entry2Label), null, null, null, null)); assertEquals(input, Type.FILESET_ENTRY_LIST.convert(input, null, currentRule)); - assertThat(Type.FILESET_ENTRY_LIST.getLabels(input)).containsExactly(entry1Label, entry2Label); + assertThat(Type.FILESET_ENTRY_LIST.flatten(input)).containsExactly(entry1Label, entry2Label); } /** |