fix: preserve whitespace before a * namespace in attribute selectors#325
Open
spokodev wants to merge 1 commit into
Open
fix: preserve whitespace before a * namespace in attribute selectors#325spokodev wants to merge 1 commit into
* namespace in attribute selectors#325spokodev wants to merge 1 commit into
Conversation
The `*` branch of the attribute parser stored the raw leading whitespace from `spaceBefore`, but that variable had just been cleared a few lines above, so `raws.spaces.attribute.before` became empty and `[ *|a ]` round-tripped to `[*|a ]`. The word-namespace branch already uses `commentBefore` here; do the same for `*`.
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.
Problem
Leading whitespace before a
*(universal) namespace in an attribute selector is dropped on a round-trip, while it is preserved for a named namespace or no namespace:Root cause
In
attribute(), thetokens.asteriskbranch records the raw spacing with the wrong variable:spaceBeforehas already been set to"", soraws.spaces.attribute.beforeis emptied. SincetoStringprefers the raw spacing when present, the leading whitespace disappears. Thetokens.wordbranch right below does the same thing correctly withcommentBefore.Fix
Use
commentBeforefor the raw spacing, matching the word-namespace branch (one word).Test plan
[ *|bar ]); the tree was already correct, but thetoStringround-trip failed onmainand passes with the fix.eslint/tscclean.