diff options
Diffstat (limited to 'vm.d')
| -rw-r--r-- | vm.d | 17 |
1 files changed, 15 insertions, 2 deletions
@@ -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(); |
