aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--src/main/java/com/google/devtools/build/lib/syntax/SkylarkList.java18
-rw-r--r--src/test/java/com/google/devtools/build/lib/syntax/SkylarkEvaluationTest.java7
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