aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build/lib/syntax/Printer.java
diff options
context:
space:
mode:
authorGravatar Francois-Rene Rideau <tunes@google.com>2015-09-17 19:17:20 +0000
committerGravatar David Chen <dzc@google.com>2015-09-17 19:36:15 +0000
commit6c10eac70123104a2b48eaf58075374e155ed12d (patch)
tree833ef1d51ee50f0385035c3d2c49a2ea6bfc719a /src/main/java/com/google/devtools/build/lib/syntax/Printer.java
parent159b74c8b96622428840bf9918cce3b95021b095 (diff)
Cleanup Skylark types some more
Clarify the criterion for being a valid Skylark value; stop claiming immutability is "the" criterion when Skylark now has mutable values; stop relying on a reflection with a magic list (this also fixes the SkylarkShell build). Clarify the criterion for determining immutable types when making a SkylarkNestedSet. Clarify and use the criterion for being a valid Skylark dict key. -- MOS_MIGRATED_REVID=103313934
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/syntax/Printer.java')
-rw-r--r--src/main/java/com/google/devtools/build/lib/syntax/Printer.java36
1 files changed, 7 insertions, 29 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 2586306bf0..bc00795625 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
@@ -15,7 +15,6 @@ package com.google.devtools.build.lib.syntax;
import com.google.common.collect.ImmutableList;
import com.google.common.collect.Lists;
-import com.google.devtools.build.lib.collect.nestedset.Order;
import com.google.devtools.build.lib.vfs.PathFragment;
import java.io.IOException;
@@ -108,15 +107,15 @@ public final class Printer {
if (o == null) {
throw new NullPointerException(); // Java null is not a build language value.
+ } else if (o instanceof SkylarkValue) {
+ ((SkylarkValue) o).write(buffer, quotationMark);
+
} else if (o instanceof String) {
writeString(buffer, (String) o, quotationMark);
} else if (o instanceof Integer || o instanceof Double) {
append(buffer, o.toString());
- } else if (o == Runtime.NONE) {
- append(buffer, "None");
-
} else if (o == Boolean.TRUE) {
append(buffer, "True");
@@ -125,11 +124,7 @@ public final class Printer {
} else if (o instanceof List<?>) {
List<?> seq = (List<?>) o;
- printList(buffer, seq, EvalUtils.isImmutable(seq), quotationMark);
-
- } else if (o instanceof SkylarkList) {
- SkylarkList list = (SkylarkList) o;
- printList(buffer, list.toList(), list.isTuple(), quotationMark);
+ printList(buffer, seq, EvalUtils.isTuple(seq), quotationMark);
} else if (o instanceof Map<?, ?>) {
Map<?, ?> dict = (Map<?, ?>) o;
@@ -141,28 +136,11 @@ public final class Printer {
append(buffer, ": ");
write(buffer, entry.getValue(), quotationMark);
- } else if (o instanceof SkylarkNestedSet) {
- SkylarkNestedSet set = (SkylarkNestedSet) o;
- append(buffer, "set(");
- printList(buffer, set, "[", ", ", "]", null, quotationMark);
- Order order = set.getOrder();
- if (order != Order.STABLE_ORDER) {
- append(buffer, ", order = \"" + order.getName() + "\"");
- }
- append(buffer, ")");
-
- } else if (o instanceof BaseFunction) {
- BaseFunction func = (BaseFunction) o;
- append(buffer, "<function " + func.getName() + ">");
-
- } else if (o instanceof Label) {
- write(buffer, o.toString(), quotationMark);
-
} else if (o instanceof PathFragment) {
append(buffer, ((PathFragment) o).getPathString());
- } else if (o instanceof SkylarkValue) {
- ((SkylarkValue) o).write(buffer, quotationMark);
+ } else if (o instanceof Class<?>) {
+ append(buffer, EvalUtils.getDataTypeNameFromClass((Class<?>) o));
} else {
append(buffer, o.toString());
@@ -271,7 +249,7 @@ public final class Printer {
* @param quotationMark The quotation mark to be used (' or ")
* @return the Appendable, in fluent style.
*/
- private static Appendable printList(
+ public static Appendable printList(
Appendable buffer,
Iterable<?> list,
String before,