fix(js_formatter): fix JSX text wrapping and empty line handling #1075
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 fixes two distinct cases related to JSX and handling hard/empty lines around text elements.
For the first, Prettier allows any single character word to hug the following or previous line. Most often, this is used with punctuation marks like
,
or!
, but any single character is allowed. Biome, however, was only checking for punctuation. This PR changes all of those checks to just be single character checks, matching Prettier: Playground LinkThe other fix is around handling empty lines when the child list contains any meaningful text nodes. Prettier removes all empty lines in this case, but Biome was preserving them as is: Playground Link
I don't fully know why this is the case, but it caused a few diffs, and now they match :)
Test Plan
The Prettier snapshots with differences have been deleted since they now match, and I added a new test file that covers all of the different permutations of text wrapping.