From 35a3eaabdf82d828e339fa3578e60a486ed0ec39 Mon Sep 17 00:00:00 2001 From: Jonathan Kelley Date: Sun, 27 Feb 2022 14:49:47 -0500 Subject: [PATCH] fix: actually remove nodes in keyed_diff_middle --- packages/core/src/diff.rs | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/packages/core/src/diff.rs b/packages/core/src/diff.rs index 4e9a11c34..5682772be 100644 --- a/packages/core/src/diff.rs +++ b/packages/core/src/diff.rs @@ -813,6 +813,15 @@ impl<'b> DiffState<'b> { return; } + // remove any old children that are not shared + // todo: make this an iterator + for child in old { + let key = child.key().unwrap(); + if !shared_keys.contains(&key) { + self.remove_nodes([child], true); + } + } + // 4. Compute the LIS of this list let mut lis_sequence = Vec::default(); lis_sequence.reserve(new_index_to_old_index.len());