Implement pop(), popitem() and setdefault() for dict
--
MOS_MIGRATED_REVID=114966513
diff --git a/src/main/java/com/google/devtools/build/lib/syntax/Runtime.java b/src/main/java/com/google/devtools/build/lib/syntax/Runtime.java
index f4b55ad..2795da1 100644
--- a/src/main/java/com/google/devtools/build/lib/syntax/Runtime.java
+++ b/src/main/java/com/google/devtools/build/lib/syntax/Runtime.java
@@ -69,6 +69,31 @@
}
}
+ /** Marker for unbound variables in cases where neither Java null nor Skylark None is suitable. */
+ @Immutable
+ public static final class UnboundMarker implements SkylarkValue {
+ private UnboundMarker() {}
+
+ @Override
+ public String toString() {
+ return "<unbound>";
+ }
+
+ @Override
+ public boolean isImmutable() {
+ return true;
+ }
+
+ @Override
+ public void write(Appendable buffer, char quotationMark) {
+ Printer.append(buffer, "<unbound>");
+ }
+ }
+
+ @SkylarkSignature(name = "<unbound>", returnType = UnboundMarker.class, documented = false,
+ doc = "Marker for unbound values in cases where neither Skylark None nor Java null can do.")
+ public static final UnboundMarker UNBOUND = new UnboundMarker();
+
/**
* Load {@link #NONE} on the stack.
* <p>Kept close to the definition to avoid reflection errors when changing it.