fix list cloning not cloning inner values

this would allow mutating values
through a list passed by value,
but now it doesn't, which is
how it always should have been.
This commit is contained in:
Mark
2024-04-30 13:58:40 +02:00
parent 1554453eb9
commit 945e19e10a
6 changed files with 38 additions and 19 deletions

View File

@@ -60,18 +60,14 @@ impl MersStatement for Variable {
info.scopes[self.var.0].vars[self.var.1] = nothing;
} else {
// (reference to) data which will never be referenced again
return Data::new(data::reference::Reference(
Arc::new(RwLock::new(Data::empty_tuple())),
Type::empty(),
));
return Data::new(data::reference::Reference(Arc::new(RwLock::new(
Data::empty_tuple(),
))));
}
}
if self.is_ref_not_ignore {
let v = &info.scopes[self.var.0].vars[self.var.1];
Data::new(data::reference::Reference(
Arc::clone(v),
v.read().unwrap().get().as_type(),
))
Data::new(data::reference::Reference(Arc::clone(v)))
} else {
info.scopes[self.var.0].vars[self.var.1]
.write()