aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main
diff options
context:
space:
mode:
authorGravatar Googler <noreply@google.com>2015-03-03 09:44:18 +0000
committerGravatar Ulf Adams <ulfjack@google.com>2015-03-05 14:22:33 +0000
commit05a0494a7f151d514cfa3050587220a2cffaf55b (patch)
tree153bf016c38d37bcbb8b73b601c778187a058792 /src/main
parent2cbac1f35f263480b8f42743c02d2b29e0e87f0a (diff)
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
Diffstat (limited to 'src/main')
-rw-r--r--src/main/java/com/google/devtools/build/lib/packages/MethodLibrary.java10
-rw-r--r--src/main/java/com/google/devtools/build/lib/syntax/SkylarkFunction.java2
-rw-r--r--src/main/java/com/google/devtools/build/lib/syntax/SkylarkList.java2
3 files changed, 8 insertions, 6 deletions
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 43dc269257..65ad87a0dd 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 @@ public class MethodLibrary {
@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 ecfd660c48..6a1aadf78c 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 @@ public abstract class SkylarkFunction extends AbstractFunction {
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 4e25b771b0..9e9788a1d4 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 @@ public abstract class SkylarkList implements Iterable<Object> {
/**
* @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()) {