feat(tazjin/rlox): Global variable assignment

Needed for example code compatibility.

Change-Id: Id83210eaaad7dcfef5aa238dd3a7ec159f6935e9
Reviewed-on: https://cl.tvl.fyi/c/depot/+/3684
Tested-by: BuildkiteCI
Reviewed-by: tazjin <mail@tazj.in>
This commit is contained in:
Vincent Ambo 2021-10-02 15:55:58 +03:00 committed by tazjin
parent 6a38600ce8
commit ad7e591c80
4 changed files with 38 additions and 3 deletions

View file

@ -181,6 +181,19 @@ impl VM {
self.push(val)
});
}
OpCode::OpSetGlobal(name_idx) => {
let name = self.chunk.constant(*name_idx).clone();
let new_val = self.pop();
with_type!(self, name, Value::String(name), {
match self.globals.get_mut(&name) {
None => unimplemented!("variable not found error"),
Some(val) => {
*val = new_val;
}
}
});
}
}
#[cfg(feature = "disassemble")]