This repository was archived by the owner on Aug 31, 2023. It is now read-only.
refactor(rome_rowan): change mutation methods to return detached nodes #2949
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.
Summary
The
splice_slots
andreplace_child
methods inrome_rowan
were initially implemented to rebuild the entire tree above the mutated node, but no code was actually relying on this outside of the implementation ofreplace_child
itself. I've modifiedsplice_slots
and movedreplace_child
into thecursor
API to return a new detached node instead of respining the entire tree, this greatly simplifies the algorithm since it doesn't need to rebuild the green tree above the current node and doesn't need to rebuild the red tree at all.Test Plan
This change is internal to rowan, while it does change the semantics of
splice_slots
andreplace_child
no code relies on this specific behavior and all the tests for the analyzer should continue to pass