This repository has been archived by the owner on Aug 31, 2023. It is now read-only.
fix(rome_analyze): handle find_diff_range in case tokens were only removed #2694
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
This PR fixes #2693 by ensuring the start and end of the range returned by
find_diff_range
do not cross. This can happen if the only difference between the previous and new syntax trees are removed tokens: the results of the linear search for the start and end of the range will cross as the new range starts at the start of the new different token from the start of the tree, and ends at the end of the first different token from the end of the tree. In the case of a removal these will be the first token after the removal, and last token before the removal respectively.Test Plan
I added a new
diff_range_remove
test to verify this case is handled correctly