From d03f264d63d273154214ad574fd3e7704ceda753 Mon Sep 17 00:00:00 2001 From: Jean Privat Date: Sat, 26 Sep 2015 01:33:32 -0400 Subject: [PATCH] ordered_tree: remove subs when all children are detached. Signed-off-by: Jean Privat --- lib/ordered_tree.nit | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/lib/ordered_tree.nit b/lib/ordered_tree.nit index 32cea45..d1dde15 100644 --- a/lib/ordered_tree.nit +++ b/lib/ordered_tree.nit @@ -128,7 +128,15 @@ class OrderedTree[E: Object] do var old_parent = parents.get_or_null(e) if old_parent != null then - sub[old_parent].remove(e) + var subs = sub[old_parent] + subs.remove(e) + if subs.is_empty then + # remove the sub when all children are detached + # so that `==` and `hash` are sane + # Otherwise an empty array will be considered + # differently than no array. + sub.keys.remove(old_parent) + end else if roots.has(e) then roots.remove(e) end -- 1.7.9.5