From 01d79cd8019684fba03af9374d14845b9dd37c10 Mon Sep 17 00:00:00 2001 From: Humza Shahid Date: Sat, 7 Sep 2024 21:35:31 +0100 Subject: [PATCH] address a bug where Vector.sub (keys, ~1) was used, solving subscript error, but revealing another error in a subsequent test case --- src/string-set.sml | 40 +++++++++++++++++++++++++++---------- tests/string-set-tests | Bin 286504 -> 286544 bytes tests/string-set-tests.sml | 7 ++++--- 3 files changed, 33 insertions(+), 14 deletions(-) diff --git a/src/string-set.sml b/src/string-set.sml index 267eff2..f0bf5d0 100644 --- a/src/string-set.sml +++ b/src/string-set.sml @@ -538,19 +538,37 @@ struct * - otherwise, just remove the key and child at this idx from parent * *) if Vector.length keys > 1 then - let - val newKeys = Vector.tabulate (Vector.length keys - 1, fn keyIdx => - Vector.sub (keys, if keyIdx >= idx then keyIdx - 1 else keyIdx)) + if idx > 0 then + let + val newKeys = Vector.tabulate (Vector.length keys - 1, fn keyIdx => + Vector.sub (keys, if keyIdx >= idx then keyIdx - 1 else keyIdx)) - val newChildren = - Vector.tabulate (Vector.length keys - 1, fn childIdx => - Vector.sub - (children, if childIdx >= idx then childIdx - 1 else childIdx)) + val newChildren = + Vector.tabulate (Vector.length keys - 1, fn childIdx => + Vector.sub + (children, if childIdx >= idx then childIdx - 1 else childIdx)) - val newNode = parentConstructor {keys = newKeys, children = newChildren} - in - CHANGED newNode - end + val newNode = + parentConstructor {keys = newKeys, children = newChildren} + in + CHANGED newNode + end + else + (* if idx = 0, then have to slice first element off from vector *) + let + val keySlice = VectorSlice.slice (keys, 1, SOME + (Vector.length keys - 1)) + val newKeys = VectorSlice.vector keySlice + + val childrenSlice = VectorSlice.slice (children, 1, SOME + (Vector.length children - 1)) + val newChildren = VectorSlice.vector childrenSlice + + val newNode = + parentConstructor {keys = newKeys, children = newChildren} + in + CHANGED newNode + end else MADE_EMPTY diff --git a/tests/string-set-tests b/tests/string-set-tests index 9f4d2a6c1d5ed882dee375dfe418db5eb34a6ffa..4b5879223dcaf72cf58091ccb0f12ee73ca75881 100755 GIT binary patch delta 60611 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 delta 61235 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 diff --git a/tests/string-set-tests.sml b/tests/string-set-tests.sml index 5ca1c86..aecfd40 100644 --- a/tests/string-set-tests.sml +++ b/tests/string-set-tests.sml @@ -118,18 +118,19 @@ struct val trie3 = StringSet.remove ("abcd", trie) val _ = assertTrue (trie = trie3, "removing key (abcd) which doesn't exist in trie returns same trie") - (* ERROR: Removing "abcde" causes a subscript error. Need to fix. *) val _ = assertTrue (StringSet.exists ("abcde", trie), "abcde exists before remove in remove5") val trie = StringSet.remove ("abcde", trie) val _ = assertFalse (StringSet.exists ("abcde", trie), "abcde does not exist after remove in remove5") val _ = assertTrue (StringSet.exists ("x", trie), "x exists before remove in remove5") val trie = StringSet.remove ("x", trie) - val _ = assertTrue (StringSet.exists ("x", trie), "x does not exist after remove in remove5") + val _ = assertFalse (StringSet.exists ("x", trie), "x does not exist after remove in remove5") + (* error: "abc" should exist at this point, but it seems not to. + * find out why and fix. *) val _ = assertTrue (StringSet.exists ("abc", trie), "abc exists before remove in remove5") val trie = StringSet.remove ("abc", trie) - val _ = assertTrue (StringSet.exists ("abc", trie), "abc does not exist after remove in remove5") + val _ = assertFalse (StringSet.exists ("abc", trie), "abc does not exist after remove in remove5") val _ = assertTrue (StringSet.exists ("ab", trie), "trie still contains ab after removals in remove5") val _ = assertTrue (StringSet.exists ("ade", trie), "trie still contains ade after removals in remove5")