diff options
-rw-r--r-- | src/main/java/com/google/devtools/build/lib/syntax/Printer.java | 10 | ||||
-rw-r--r-- | src/test/java/com/google/devtools/build/lib/syntax/PrinterTest.java | 2 |
2 files changed, 8 insertions, 4 deletions
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 b91237ad72..1c902a6c2d 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.syntax.SkylarkList.Tuple; 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 @@ public class Printer { * @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 @@ public class Printer { @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 @@ public class Printer { */ @Override public BasePrinter format(String pattern, Object... arguments) { - return this.formatWithList(pattern, ImmutableList.copyOf(arguments)); + return this.formatWithList(pattern, Arrays.asList(arguments)); } /** diff --git a/src/test/java/com/google/devtools/build/lib/syntax/PrinterTest.java b/src/test/java/com/google/devtools/build/lib/syntax/PrinterTest.java index 7c0bc11c79..84386b6a5f 100644 --- a/src/test/java/com/google/devtools/build/lib/syntax/PrinterTest.java +++ b/src/test/java/com/google/devtools/build/lib/syntax/PrinterTest.java @@ -103,6 +103,8 @@ public class PrinterTest { assertThat(Printer.formatWithList("%s %d", Tuple.of("foo", 3))).isEqualTo("foo 3"); assertThat(Printer.format("%s %d", "foo", 3)).isEqualTo("foo 3"); + assertThat(Printer.format("%s %s %s", 1, null, 3)).isEqualTo("1 null 3"); + // Note: formatToString doesn't perform scalar x -> (x) conversion; // The %-operator is responsible for that. assertThat(Printer.formatWithList("", Tuple.of())).isEmpty(); |