about summary refs log tree commit diff
path: root/users/tazjin/rlox/src/bytecode/opcode.rs
diff options
context:
space:
mode:
authorVincent Ambo <mail@tazj.in>2021-03-02T20·26+0200
committertazjin <mail@tazj.in>2021-03-03T10·51+0000
commited3fce2b19fa0d28054382093b019967a9a16177 (patch)
tree102ade5adc95667ebedaa56e20cee387c2ff524b /users/tazjin/rlox/src/bytecode/opcode.rs
parent2cd77ea26d76b20ff820f1ebe5e77f1360f5d1f5 (diff)
feat(tazjin/rlox): Implement expression statements r/2265
These aren't particularly useful without side effects, but one step at
a time.

This diverges slightly from the book, in that OpPop retains the last
value it "forgot" from the stack in a special field on the
interpreter.

This makes it possible to return values from expression statements,
which helps in cases where Lox is embedded as a scripting
language (please don't do this ever) or in tests.

Change-Id: Ided0bc04c6e80ddb23ba4693d61ac9e08b002d58
Reviewed-on: https://cl.tvl.fyi/c/depot/+/2584
Reviewed-by: tazjin <mail@tazj.in>
Tested-by: BuildkiteCI
Diffstat (limited to 'users/tazjin/rlox/src/bytecode/opcode.rs')
-rw-r--r--users/tazjin/rlox/src/bytecode/opcode.rs1
1 files changed, 1 insertions, 0 deletions
diff --git a/users/tazjin/rlox/src/bytecode/opcode.rs b/users/tazjin/rlox/src/bytecode/opcode.rs
index 7a3355460473..37466b30564c 100644
--- a/users/tazjin/rlox/src/bytecode/opcode.rs
+++ b/users/tazjin/rlox/src/bytecode/opcode.rs
@@ -28,4 +28,5 @@ pub enum OpCode {
 
     // Built in operations
     OpPrint,
+    OpPop,
 }