Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This PR fixes issues with key deduplication by
RegionTree
and simplification found by @Saloed. Also, made renaming inRegionTree
to make it easier to understand.Details
Issue with key deduplication
Consider the following example:
It happens, because in case
keyFilter
returnstrue
,localize
skips not only the top node, but also its subtree, which is incorrect in such case. Nowlocalize
with filtering maintains this correctly, but may leave some nodes even they satisfykeyFilter
, which is OK for us.Issue with simplification
Consider the following example:
It happens, because guarded update nodes still remains in the memory region, though guards of some of them have evaluated to false. Fixed it in memory updates map functions.
Renaming
RegionTree
is actually a persistent event-storage with support of grouped reading and writing, where events live in specific regions. Thus, now its signature looks as followingclass RegionTree<Reg, Value>
. IMO, it's much clearer.