mirror of
https://github.com/loro-dev/loro.git
synced 2025-02-02 11:06:14 +00:00
fix: update leaf cache when create new elem by del
This commit is contained in:
parent
c8a83fe676
commit
e30ba86653
2 changed files with 20 additions and 7 deletions
|
@ -209,6 +209,10 @@ impl<'a, T: Rle, A: RleTreeTrait<T>> LeafNode<'a, T, A> {
|
|||
}
|
||||
|
||||
A::update_cache_leaf(self);
|
||||
if let Err(new) = &mut result {
|
||||
A::update_cache_leaf(&mut *new);
|
||||
}
|
||||
|
||||
result
|
||||
}
|
||||
|
||||
|
|
|
@ -5,6 +5,11 @@ use crate::rle_tree::tree_trait::Position;
|
|||
use super::super::*;
|
||||
use std::ops::Range;
|
||||
|
||||
#[ctor]
|
||||
fn init_color_backtrace() {
|
||||
color_backtrace::install();
|
||||
}
|
||||
|
||||
#[derive(Debug)]
|
||||
struct RangeTreeTrait;
|
||||
impl RleTreeTrait<Range<usize>> for RangeTreeTrait {
|
||||
|
@ -196,13 +201,17 @@ fn delete_that_causes_removing_layers() {
|
|||
}
|
||||
tree.debug_check();
|
||||
tree.delete_range(Some(1), None);
|
||||
dbg!(tree);
|
||||
}
|
||||
|
||||
#[ctor]
|
||||
fn init_color_backtrace() {
|
||||
color_backtrace::install();
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn delete_that_causes_increase_levels() {}
|
||||
fn delete_that_causes_increase_levels() {
|
||||
let mut t: RleTree<Range<usize>, RangeTreeTrait> = RleTree::new();
|
||||
let tree = t.get_mut();
|
||||
tree.insert(0, 0..100);
|
||||
for i in 0..50 {
|
||||
tree.delete_range(Some(i), Some(i + 1));
|
||||
tree.debug_check();
|
||||
}
|
||||
|
||||
dbg!(tree);
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue