diff options
author | Vincent Ambo <mail@tazj.in> | 2021-10-19T20·59+0200 |
---|---|---|
committer | tazjin <mail@tazj.in> | 2021-10-20T12·50+0000 |
commit | 050a2b473c48b87994e56ade381afbfc2bca4de3 (patch) | |
tree | 97dd9dc0c36418cf967befd9ba672c93b095c561 /users/tazjin/rlox/src/bytecode/chunk.rs | |
parent | e92a951f6cd14b5e207e5a1b04ea93cf97ba92d0 (diff) |
refactor(tazjin/rlox): Introduce newtypes for various indices r/2980
Since this code is essentially a fairly plain translation from C, it is a bit confusing to deal with the original untyped code. This is an attempt to try and clean some of it up. Change-Id: Icd21f531932e1a811c0d6dbf2e9acba61ca9c45d Reviewed-on: https://cl.tvl.fyi/c/depot/+/3734 Tested-by: BuildkiteCI Reviewed-by: tazjin <mail@tazj.in>
Diffstat (limited to 'users/tazjin/rlox/src/bytecode/chunk.rs')
-rw-r--r-- | users/tazjin/rlox/src/bytecode/chunk.rs | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/users/tazjin/rlox/src/bytecode/chunk.rs b/users/tazjin/rlox/src/bytecode/chunk.rs index 7132be430a0f..b9a3994fe1c1 100644 --- a/users/tazjin/rlox/src/bytecode/chunk.rs +++ b/users/tazjin/rlox/src/bytecode/chunk.rs @@ -1,6 +1,6 @@ use std::ops::Index; -use super::opcode::OpCode; +use super::opcode::{ConstantIdx, OpCode}; use super::value; // In the book, this type is a hand-rolled dynamic array @@ -38,8 +38,8 @@ impl Chunk { idx } - pub fn constant(&self, idx: usize) -> &value::Value { - self.constants.index(idx) + pub fn constant(&self, idx: ConstantIdx) -> &value::Value { + self.constants.index(idx.0) } fn add_line(&mut self, line: usize) { @@ -79,7 +79,7 @@ pub fn disassemble_instruction(chunk: &Chunk, offset: usize) { match chunk.code.index(offset) { OpCode::OpConstant(idx) => { - println!("OpConstant({}) '{:?}'", *idx, chunk.constant(*idx)) + println!("OpConstant({:?}) '{:?}'", idx, chunk.constant(*idx)) } op => println!("{:?}", op), } |