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);