aboutsummaryrefslogtreecommitdiff
path: root/vm.d
diff options
context:
space:
mode:
Diffstat (limited to 'vm.d')
-rw-r--r--vm.d17
1 files changed, 15 insertions, 2 deletions
diff --git a/vm.d b/vm.d
index fbf874c..c5de28c 100644
--- a/vm.d
+++ b/vm.d
@@ -192,6 +192,14 @@ class VM {
return value.as.seq;
}
+ List asList(Value value) {
+ return cast(List)value.as.seq;
+ }
+
+ String asNebString(Value value) {
+ return cast(String)value.as.seq;
+ }
+
double asNumber(Value value) {
return value.as.number;
}
@@ -491,10 +499,15 @@ class VM {
this.pushA(makeBooleanValue(areValuesEqual(a, b)));
break;
case OpCode.OP_CONCAT:
- Seq b = asSeq(this.popA());
- Seq a = asSeq(this.popA());
+ String b = asNebString(this.popA());
+ String a = asNebString(this.popA());
this.pushA(makeSeqValue(a.concat(b)));
break;
+ case OpCode.OP_APPEND:
+ Value b = this.popA();
+ List a = asList(this.popA());
+ this.pushA(makeSeqValue(a.append(b)));
+ break;
case OpCode.OP_GREATER:
Value b = this.popA();
Value a = this.popA();