dict patterns prolly work? one-level nested patterns work
This commit is contained in:
parent
45d2e7e742
commit
04c96c9edb
|
@ -559,7 +559,7 @@ impl Compiler {
|
||||||
let before_load_dict_idx = self.len();
|
let before_load_dict_idx = self.len();
|
||||||
self.emit_byte(0xff);
|
self.emit_byte(0xff);
|
||||||
let mut jump_idxes = vec![];
|
let mut jump_idxes = vec![];
|
||||||
let dict_stack_pos = self.stack_depth;
|
let dict_stack_pos = self.stack_depth - 1;
|
||||||
for pair in pairs {
|
for pair in pairs {
|
||||||
let (PairPattern(key, pattern), _) = pair else {
|
let (PairPattern(key, pattern), _) = pair else {
|
||||||
unreachable!()
|
unreachable!()
|
||||||
|
|
|
@ -74,8 +74,8 @@ pub fn run(src: &'static str) {
|
||||||
pub fn main() {
|
pub fn main() {
|
||||||
env::set_var("RUST_BACKTRACE", "1");
|
env::set_var("RUST_BACKTRACE", "1");
|
||||||
let src = "
|
let src = "
|
||||||
let #{:a x} = #{:a 1}
|
let #{a, :b #{c}} = #{:a 1, :b #{:c 3}}
|
||||||
x
|
[a, c]
|
||||||
";
|
";
|
||||||
run(src);
|
run(src);
|
||||||
}
|
}
|
||||||
|
|
|
@ -313,6 +313,7 @@ impl<'a> Vm<'a> {
|
||||||
};
|
};
|
||||||
let value = dict.get(&key).unwrap_or(&Value::Nil);
|
let value = dict.get(&key).unwrap_or(&Value::Nil);
|
||||||
self.push(value.clone());
|
self.push(value.clone());
|
||||||
|
self.ip += 2;
|
||||||
}
|
}
|
||||||
MatchDict => {
|
MatchDict => {
|
||||||
let idx = self.stack.len() - self.match_depth as usize - 1;
|
let idx = self.stack.len() - self.match_depth as usize - 1;
|
||||||
|
|
Loading…
Reference in New Issue
Block a user