aboutsummaryrefslogtreecommitdiff
path: root/chunk.d
diff options
context:
space:
mode:
authormryouse2023-05-26 21:04:49 +0000
committermryouse2023-05-26 21:04:49 +0000
commita043f552ddca8d890b14bcddf555472ef69e9014 (patch)
treee4dbc495867791aff6c5d9129a717f6a0f55578d /chunk.d
parentb57c1630da58d55dbb7855d9de76f776600038ea (diff)
bytecode compilation of map()
Diffstat (limited to 'chunk.d')
-rw-r--r--chunk.d10
1 files changed, 9 insertions, 1 deletions
diff --git a/chunk.d b/chunk.d
index 63d5bae..18bf12d 100644
--- a/chunk.d
+++ b/chunk.d
@@ -126,6 +126,9 @@ class List : Seq {
}
override Seq rest() {
+ if (this.inner.length == 0) {
+ return new List(0);
+ }
List ret = new List(to!int(this.inner.length) - 1);
for (int i = 1; i < this.inner.length; i++) {
ret.addItemAtIndex(this.inner[i], i - 1);
@@ -157,7 +160,11 @@ class List : Seq {
}
override string toString() {
- return format("list ('%s' + %d)", printableValue(this.inner[0]), this.inner.length - 1);
+ if (this.inner.length == 0) {
+ return "nil";
+ } else {
+ return format("list ('%s' + %d)", printableValue(this.inner[0]), this.inner.length - 1);
+ }
}
}
@@ -185,6 +192,7 @@ enum OpCode {
OP_JUMP,
OP_JUMP_IF_FALSE,
OP_JUMP_IF_TRUE,
+ OP_JUMP_TO,
OP_IS_NIL,
OP_DUPLICATE,