Improve context recursion

This commit is contained in:
Jeff 2024-07-02 21:06:23 -04:00
parent dce6dfbc40
commit 0e52ed7a49
2 changed files with 8 additions and 4 deletions

View File

@ -58,7 +58,6 @@ pub use self::{
use crate::{
context::Context,
error::{DustError, RuntimeError, ValidationError},
identifier::Identifier,
Value,
};

View File

@ -219,10 +219,15 @@ impl Context {
pub fn set_type(&self, identifier: Identifier, r#type: Type) -> Result<(), PoisonError> {
log::debug!("Setting {identifier} to type {}", r#type);
self.data
.write()?
let mut data = self.data.write()?;
let usage_data = data
.variables
.insert(identifier, (VariableData::Type(r#type), UsageData::new()));
.remove(&identifier)
.map(|(_, usage_data)| usage_data)
.unwrap_or_else(|| UsageData::new());
data.variables
.insert(identifier, (VariableData::Type(r#type), usage_data));
Ok(())
}