mirror of
https://github.com/loro-dev/loro.git
synced 2025-02-08 21:47:41 +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);
|
A::update_cache_leaf(self);
|
||||||
|
if let Err(new) = &mut result {
|
||||||
|
A::update_cache_leaf(&mut *new);
|
||||||
|
}
|
||||||
|
|
||||||
result
|
result
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -5,6 +5,11 @@ use crate::rle_tree::tree_trait::Position;
|
||||||
use super::super::*;
|
use super::super::*;
|
||||||
use std::ops::Range;
|
use std::ops::Range;
|
||||||
|
|
||||||
|
#[ctor]
|
||||||
|
fn init_color_backtrace() {
|
||||||
|
color_backtrace::install();
|
||||||
|
}
|
||||||
|
|
||||||
#[derive(Debug)]
|
#[derive(Debug)]
|
||||||
struct RangeTreeTrait;
|
struct RangeTreeTrait;
|
||||||
impl RleTreeTrait<Range<usize>> for RangeTreeTrait {
|
impl RleTreeTrait<Range<usize>> for RangeTreeTrait {
|
||||||
|
@ -196,13 +201,17 @@ fn delete_that_causes_removing_layers() {
|
||||||
}
|
}
|
||||||
tree.debug_check();
|
tree.debug_check();
|
||||||
tree.delete_range(Some(1), None);
|
tree.delete_range(Some(1), None);
|
||||||
dbg!(tree);
|
|
||||||
}
|
|
||||||
|
|
||||||
#[ctor]
|
|
||||||
fn init_color_backtrace() {
|
|
||||||
color_backtrace::install();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[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