- Notifications
You must be signed in to change notification settings - Fork664
Fix panic in LSP formatting with multi-byte characters and trailing newlines#1391
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to ourterms of service andprivacy statement. We’ll occasionally send you account related emails.
Already on GitHub?Sign in to your account
Draft
Copilot wants to merge5 commits intomainChoose a base branch fromcopilot/fix-1389
base:main
Could not load branches
Branch not found:{{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline, and old review comments may become outdated.
+62 −1
Conversation
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
…ewlinesCo-authored-by: jakebailey <5341706+jakebailey@users.noreply.github.com>
Co-authored-by: jakebailey <5341706+jakebailey@users.noreply.github.com>
Copilot finished work on behalf ofjakebaileyJuly 11, 2025 17:24
Delete all of the compiler tests; they are not needed for editor related PRs. |
Co-authored-by: jakebailey <5341706+jakebailey@users.noreply.github.com>
Done. All compiler tests have been removed from the PR. The language server tests remain as they are appropriate for testing the LSP formatting fix. (0f6e9fc) |
Copilot finished work on behalf ofjakebaileyJuly 11, 2025 17:36
Uh oh!
There was an error while loading.Please reload this page.
Co-authored-by: jakebailey <5341706+jakebailey@users.noreply.github.com>
Copilot finished work on behalf ofjakebaileyJuly 11, 2025 17:45
Sign up for freeto 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.
Uh oh!
There was an error while loading.Please reload this page.
This PR fixes a panic that occurs when formatting files from VSCode if the file contains multi-byte characters (e.g.,
→
,🐈
or Japanese characters like日本語
) and ends with 2+ newlines.Problem
The panic occurred in the
PositionToLineAndCharacter
function ininternal/ls/converters.go
when trying to slice text with bounds[start:position]
whereposition
could exceed the actual text length:Root Cause
When the formatter generates text edits for files with multi-byte characters and trailing newlines, it can create ranges that extend beyond the actual text length. The
PositionToLineAndCharacter
function didn't handle this case properly, leading to a "slice bounds out of range" panic.Solution
Added a bounds check to ensure that
position
never exceeds the actual text length before attempting to slice the text:This ensures that even if the formatter or other components pass positions beyond the text length, the converter will handle them gracefully by treating them as positions at the end of the text.
Testing
The fix is minimal, safe, and maintains backward compatibility while resolving the panic.
Fixes#1389.
💬 Share your feedback on Copilot coding agent for the chance to win a $200 gift card! Clickhere to start the survey.