diff options
-rw-r--r-- | src/main/java/com/google/devtools/build/lib/syntax/SkylarkList.java | 18 | ||||
-rw-r--r-- | src/test/java/com/google/devtools/build/lib/syntax/SkylarkEvaluationTest.java | 7 |
2 files changed, 5 insertions, 20 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/syntax/SkylarkList.java b/src/main/java/com/google/devtools/build/lib/syntax/SkylarkList.java index cbcf21a95c..fb4f2457d4 100644 --- a/src/main/java/com/google/devtools/build/lib/syntax/SkylarkList.java +++ b/src/main/java/com/google/devtools/build/lib/syntax/SkylarkList.java @@ -362,23 +362,15 @@ public abstract class SkylarkList implements Iterable<Object> { if (elements.isEmpty()) { return EMPTY_LIST; } - return new SimpleSkylarkList( - ImmutableList.copyOf(elements), false, getContentType(elements, loc)); + return new SimpleSkylarkList(ImmutableList.copyOf(elements), false, getContentType(elements)); } - private static SkylarkType getContentType(Collection<?> elements, Location loc) + private static SkylarkType getContentType(Collection<?> elements) throws EvalException { SkylarkType type = SkylarkType.TOP; for (Object element : elements) { SkylarkType elementType = SkylarkType.typeOf(element); - SkylarkType inter = SkylarkType.intersection(type, elementType); - if (inter == SkylarkType.BOTTOM) { - throw new EvalException(loc, String.format( - "Incompatible types in list: found a %s but the previous elements were %ss", - elementType, type)); - } else { - type = inter; - } + type = SkylarkType.intersection(type, elementType); } return type; } @@ -399,10 +391,6 @@ public abstract class SkylarkList implements Iterable<Object> { return left; } SkylarkType type = SkylarkType.intersection(left.contentType, right.contentType); - if (type == SkylarkType.BOTTOM) { - throw new EvalException(loc, String.format("cannot concatenate list of %s with list of %s", - left.contentType, right.contentType)); - } return new ConcatenatedSkylarkList(left, right, left.isTuple(), type); } diff --git a/src/test/java/com/google/devtools/build/lib/syntax/SkylarkEvaluationTest.java b/src/test/java/com/google/devtools/build/lib/syntax/SkylarkEvaluationTest.java index 744e6db31b..575e0a67d7 100644 --- a/src/test/java/com/google/devtools/build/lib/syntax/SkylarkEvaluationTest.java +++ b/src/test/java/com/google/devtools/build/lib/syntax/SkylarkEvaluationTest.java @@ -867,15 +867,12 @@ public class SkylarkEvaluationTest extends EvaluationTest { @Test public void testCannotCreateMixedListInSkylark() throws Exception { - new SkylarkTest().update("mock", new Mock()).testIfExactError( - "Incompatible types in list: found a int but the previous elements were strings", - "[mock.string(), 1, 2]"); + new SkylarkTest().testExactOrder("['a', 'b', 1, 2]", "a", "b", 1, 2); } @Test public void testCannotConcatListInSkylarkWithDifferentGenericTypes() throws Exception { - new SkylarkTest().update("mock", new Mock()).testIfExactError( - "cannot concatenate list of string with list of int", "mock.string_list() + [1, 2]"); + new SkylarkTest().testExactOrder("[1, 2] + ['a', 'b']", 1, 2, "a", "b"); } @Test |