Skylark: Allow list slices

--
MOS_MIGRATED_REVID=88727892
diff --git a/src/main/java/com/google/devtools/build/lib/syntax/FuncallExpression.java b/src/main/java/com/google/devtools/build/lib/syntax/FuncallExpression.java
index c31d434..41fe332 100644
--- a/src/main/java/com/google/devtools/build/lib/syntax/FuncallExpression.java
+++ b/src/main/java/com/google/devtools/build/lib/syntax/FuncallExpression.java
@@ -247,7 +247,7 @@
 
   @Override
   public String toString() {
-    if (func.getName().equals("$substring")) {
+    if (func.getName().equals("$slice")) {
       return obj + "[" + args.get(0) + ":" + args.get(1) + "]";
     }
     if (func.getName().equals("$index")) {
diff --git a/src/main/java/com/google/devtools/build/lib/syntax/Parser.java b/src/main/java/com/google/devtools/build/lib/syntax/Parser.java
index 45eae4c..68a4425 100644
--- a/src/main/java/com/google/devtools/build/lib/syntax/Parser.java
+++ b/src/main/java/com/google/devtools/build/lib/syntax/Parser.java
@@ -697,7 +697,7 @@
       return makeFuncallExpression(receiver, new Ident("$index"), args,
                                    start, token.right);
     }
-    // This is a substring
+    // This is a slice (or substring)
     expect(TokenKind.COLON);
     int loc2 = token.left;
     if (token.kind == TokenKind.RBRACKET) {
@@ -708,7 +708,7 @@
     expect(TokenKind.RBRACKET);
 
     args.add(setLocation(new Argument.Positional(endExpr), loc2, endExpr));
-    return makeFuncallExpression(receiver, new Ident("$substring"), args,
+    return makeFuncallExpression(receiver, new Ident("$slice"), args,
                                  start, token.right);
   }