BUILD language: Improve error message when using operator [].

--
MOS_MIGRATED_REVID=93977184
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 5a04ba1..7bdc0c0 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,6 +247,17 @@
     return numPositionalArgs;
   }
 
+  private String functionName() {
+    String name = func.getName();
+    if (name.equals("$slice")) {
+      return "operator [:]";
+    } else if (name.equals("$index")) {
+      return "operator []";
+    } else {
+      return "function '" + name + "'";
+    }
+  }
+
   @Override
   public String toString() {
     if (func.getName().equals("$slice")) {
@@ -516,8 +527,8 @@
         }
       } else {
         throw new EvalException(getLocation(), String.format(
-            "function '%s' is not defined on '%s'", func.getName(),
-            EvalUtils.getDataTypeName(objValue)));
+            "%s is not defined on object of type '%s'",
+            functionName(), EvalUtils.getDataTypeName(objValue)));
       }
     } else { // func(...)
       Object funcValue = func.eval(env);