Fix NPE in Printer
RELNOTES: None
PiperOrigin-RevId: 165489091
diff --git a/src/main/java/com/google/devtools/build/lib/syntax/Printer.java b/src/main/java/com/google/devtools/build/lib/syntax/Printer.java
index b91237a..1c902a6 100644
--- a/src/main/java/com/google/devtools/build/lib/syntax/Printer.java
+++ b/src/main/java/com/google/devtools/build/lib/syntax/Printer.java
@@ -13,7 +13,6 @@
// limitations under the License.
package com.google.devtools.build.lib.syntax;
-import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableSet;
import com.google.common.collect.Iterables;
import com.google.devtools.build.lib.events.Location;
@@ -23,6 +22,7 @@
import com.google.devtools.build.lib.vfs.Path;
import com.google.devtools.build.lib.vfs.PathFragment;
import java.io.IOException;
+import java.util.Arrays;
import java.util.Formattable;
import java.util.Formatter;
import java.util.List;
@@ -232,7 +232,7 @@
* @return the formatted string.
*/
public static Formattable formattable(final String pattern, Object... arguments) {
- final ImmutableList<Object> args = ImmutableList.copyOf(arguments);
+ final List<Object> args = Arrays.asList(arguments);
return new Formattable() {
@Override
public String toString() {
@@ -341,7 +341,9 @@
@Override
public BasePrinter repr(Object o) {
if (o == null) {
- throw new NullPointerException(); // Java null is not a valid Skylark value.
+ // Java null is not a valid Skylark value, but sometimes printers are used on non-Skylark
+ // values such as Locations or ASTs.
+ this.append("null");
} else if (o instanceof SkylarkValue) {
((SkylarkValue) o).repr(this);
@@ -512,7 +514,7 @@
*/
@Override
public BasePrinter format(String pattern, Object... arguments) {
- return this.formatWithList(pattern, ImmutableList.copyOf(arguments));
+ return this.formatWithList(pattern, Arrays.asList(arguments));
}
/**