Skylark: 'enumerate' function is fixed (see the extra check in MethodLibraryTest#testEnumerate), it returns a SkylarkList of tuples.
MethodLibrary tests are cleaned up.
--
MOS_MIGRATED_REVID=87592639
diff --git a/src/main/java/com/google/devtools/build/lib/packages/MethodLibrary.java b/src/main/java/com/google/devtools/build/lib/packages/MethodLibrary.java
index 43dc269..65ad87a 100644
--- a/src/main/java/com/google/devtools/build/lib/packages/MethodLibrary.java
+++ b/src/main/java/com/google/devtools/build/lib/packages/MethodLibrary.java
@@ -641,14 +641,16 @@
@Override
public Object call(Object[] args, FuncallExpression ast) throws EvalException,
ConversionException {
- List<Object> input = Type.OBJECT_LIST.convert(args[0], "'enumerate' operand");
- List<List<Object>> result = Lists.newArrayList();
+ // Note that enumerate is only available in Skylark.
+ SkylarkList input = cast(
+ args[0], SkylarkList.class, "enumerate operand", ast.getLocation());
+ List<SkylarkList> result = Lists.newArrayList();
int count = 0;
for (Object obj : input) {
- result.add(Lists.newArrayList(count, obj));
+ result.add(SkylarkList.tuple(Lists.newArrayList(count, obj)));
count++;
}
- return result;
+ return SkylarkList.list(result, ast.getLocation());
}
};
diff --git a/src/main/java/com/google/devtools/build/lib/syntax/SkylarkFunction.java b/src/main/java/com/google/devtools/build/lib/syntax/SkylarkFunction.java
index ecfd660..6a1aadf 100644
--- a/src/main/java/com/google/devtools/build/lib/syntax/SkylarkFunction.java
+++ b/src/main/java/com/google/devtools/build/lib/syntax/SkylarkFunction.java
@@ -300,7 +300,7 @@
return type.cast(elem);
} catch (ClassCastException e) {
throw new EvalException(loc, String.format("expected %s for '%s' but got %s instead",
- type.getSimpleName(), what, EvalUtils.getDataTypeName(elem)));
+ EvalUtils.getDataTypeNameFromClass(type), what, EvalUtils.getDataTypeName(elem)));
}
}
}
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 4e25b77..9e9788a 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
@@ -353,7 +353,7 @@
/**
* @param elements the contents of the list
* @return a Skylark list containing elements
- * @throws an EvalException in case the list is not monomorphic
+ * @throws EvalException in case the list is not monomorphic
*/
public static SkylarkList list(Collection<?> elements, Location loc) throws EvalException {
if (elements.isEmpty()) {