Refactor context method

This commit is contained in:
Jeff 2024-09-03 06:08:34 -04:00
parent d6ab891d7f
commit bd76622543

View File

@ -444,22 +444,16 @@ impl ContextInner {
let found = self.update_position_if_found(identifier, position)?; let found = self.update_position_if_found(identifier, position)?;
if found { if found {
return Ok(true); Ok(true)
} else if let Some(parent) = &self.parent { } else {
if let Some(parent) = parent.upgrade() { let mut associations = self.associations.write()?;
let found_in_ancestor = parent.update_position_if_found(identifier, position)?;
if !found_in_ancestor { log::trace!("Updating {identifier}'s last position to {position:?}");
let mut associations = self.associations.write()?;
log::trace!("Updating {identifier}'s last position to {position:?}"); associations.insert(identifier.clone(), (ContextData::Reserved, position));
associations.insert(identifier.clone(), (ContextData::Reserved, position)); Ok(false)
}
}
} }
Ok(false)
} }
fn update_position_if_found( fn update_position_if_found(
@ -474,10 +468,14 @@ impl ContextInner {
*last_position = position; *last_position = position;
Ok(true) return Ok(true);
} else { } else if let Some(parent) = &self.parent {
Ok(false) if let Some(parent) = parent.upgrade() {
return parent.update_position_if_found(identifier, position);
}
} }
Ok(false)
} }
} }