Get cart assignments working

This commit is contained in:
Alex Bethel 2021-10-23 15:08:10 -06:00
parent 7e0daeab29
commit 2871e95e75

View file

@ -255,15 +255,21 @@ impl ExecEnv {
for index in indices { for index in indices {
let index = self.eval_expr(index)?; let index = self.eval_expr(index)?;
let value = cell.borrow().to_owned(); let next_cell;
let mut value = value.into_cart(); match &mut *cell.borrow_mut() {
if let Some(x) = value.get(&index) { Value::Cart(c) => {
cell = Rc::clone(x); if let Some(x) = c.get(&index) {
next_cell = Rc::clone(x);
} else { } else {
cell = Rc::new(RefCell::new(Value::Cart(Default::default()))); next_cell =
value.insert(index, Rc::clone(&cell)); Rc::new(RefCell::new(Value::Cart(Default::default())));
c.insert(index, Rc::clone(&next_cell));
} }
} }
_ => todo!(),
}
cell = next_cell;
}
cell.replace(value); cell.replace(value);
} }
} }