Fix offset conversions at the end of the document #2203
Merged
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.
Fixes #2196
Changes
Conversion of the end of range to offset was buggy.
VSC sometimes sends
-1
as line index. If the start or end position of the range is outside the document, the corresponding offset should be set to 0 or the document's text length, respectively.But in case of the end range we were setting it to
0
.To avoid that mistake:
Position::toOffset
method name toPosition::toOffsetOrZero
to be very explicit of what it does. It should not be used for ranges, but sometimes we only have a single position (like for a text insert).Range::toOffsetRange
which returns pair of offsets, correcting them appropriately depending if position is a start or endTest plan
Edit should be properly rejected and file should be empty again.