Improve the way a FuncallExpression is printed while debugging.
--
MOS_MIGRATED_REVID=93908545
diff --git a/src/main/java/com/google/devtools/build/lib/syntax/EvalUtils.java b/src/main/java/com/google/devtools/build/lib/syntax/EvalUtils.java
index bdc0fb6..1287fc7 100644
--- a/src/main/java/com/google/devtools/build/lib/syntax/EvalUtils.java
+++ b/src/main/java/com/google/devtools/build/lib/syntax/EvalUtils.java
@@ -398,7 +398,7 @@
}
}
- private static void printList(Iterable<?> list,
+ public static void printList(Iterable<?> list,
String before, String separator, String after, String singletonTerminator, Appendable buffer)
throws IOException {
boolean printSeparator = false; // don't print the separator before the first element
@@ -418,7 +418,7 @@
buffer.append(after);
}
- private static void printList(Iterable<?> list, boolean isTuple, Appendable buffer)
+ public static void printList(Iterable<?> list, boolean isTuple, Appendable buffer)
throws IOException {
if (isTuple) {
printList(list, "(", ", ", ")", ",", buffer);
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 b996588..5a04ba1 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
@@ -26,6 +26,7 @@
import com.google.devtools.build.lib.syntax.EvalException.EvalExceptionWithJavaCause;
import com.google.devtools.build.lib.util.StringUtilities;
+import java.io.IOException;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.lang.reflect.Modifier;
@@ -254,10 +255,17 @@
if (func.getName().equals("$index")) {
return obj + "[" + args.get(0) + "]";
}
+ StringBuilder sb = new StringBuilder();
if (obj != null) {
- return obj + "." + func + "(" + args + ")";
+ sb.append(obj).append(".");
}
- return func + "(" + args + ")";
+ sb.append(func);
+ try {
+ EvalUtils.printList(args, "(", ", ", ")", null, sb);
+ } catch (IOException x) {
+ throw new RuntimeException("Error while printing", x);
+ }
+ return sb.toString();
}
/**