fix(core): correct range intersection when ranges share start/end lines - #13201
Open
eeshsaxena wants to merge 1 commit into
Open
fix(core): correct range intersection when ranges share start/end lines#13201eeshsaxena wants to merge 1 commit into
eeshsaxena wants to merge 1 commit into
Conversation
In the multi-line branch, intersection picked the start character from whichever range's start line matched startLine first, and likewise for the end. When both ranges begin (or end) on the shared line, that dropped the comparison: it returned a's character instead of the later start / earlier end. Compare the characters when the lines are equal.
Contributor
|
I have read the CLA Document and I hereby sign the CLA You can retrigger this bot by commenting recheck in this Pull Request. Posted by the CLA Assistant Lite bot. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
Description
intersection(a, b)incore/util/ranges.tscomputes the wrong start/end character in the multi-line branch when the two ranges begin (or end) on the same line.It picked the character from whichever range's line matched
startLine/endLinefirst:When both ranges start on that shared line, this returns
a's character instead of the later of the two — and symmetrically for the end. Example (both share start line 0 and end line 3):The single-line branch already does this correctly (
Math.max/Math.min); this makes the multi-line branch consistent.Fix
When the two ranges share the start line, take
Math.maxof the start characters; when they share the end line, takeMath.minof the end characters. Otherwise the previous behavior is unchanged.Testing
Added a
ranges.test.tscase for two ranges sharing both start and end lines (fails before, passes after). All existingintersectiontests still pass (they use ranges on different start/end lines, so they don't touch the changed branch). Verified the logic directly against the existing test inputs plus the new case.