diff options
author | brandjon <brandjon@google.com> | 2017-06-27 18:14:54 +0200 |
---|---|---|
committer | Marcel Hlopko <hlopko@google.com> | 2017-06-28 10:17:45 +0200 |
commit | e2ffd5d3eb8a24efc26568543ae32637c6d26380 (patch) | |
tree | 63ec3358f98aa758b8d2a83c3d5e6218e6a37c03 /src/main/java/com/google/devtools/build/lib/syntax/FuncallExpression.java | |
parent | 3bc1547a5cd78bd6639d968b3cfddbe26b1c31d5 (diff) |
Add a pretty printer for Skylark ASTs
This can be used to canonically compare ASTs for equality, e.g. in tests.
RELNOTES: None
PiperOrigin-RevId: 160283160
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/syntax/FuncallExpression.java')
-rw-r--r-- | src/main/java/com/google/devtools/build/lib/syntax/FuncallExpression.java | 18 |
1 files changed, 18 insertions, 0 deletions
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 2c7a2c888f..63120932a0 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 @@ -32,6 +32,7 @@ import com.google.devtools.build.lib.syntax.Runtime.NoneType; import com.google.devtools.build.lib.util.Pair; import com.google.devtools.build.lib.util.Preconditions; 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; @@ -249,6 +250,23 @@ public final class FuncallExpression extends Expression { return numPositionalArgs; } + @Override + public void prettyPrint(Appendable buffer) throws IOException { + if (obj != null) { + obj.prettyPrint(buffer); + buffer.append('.'); + } + func.prettyPrint(buffer); + buffer.append('('); + String sep = ""; + for (Argument.Passed arg : args) { + buffer.append(sep); + arg.prettyPrint(buffer); + sep = ", "; + } + buffer.append(')'); + } + @Override public String toString() { StringBuilder sb = new StringBuilder(); |