Skip to content

css_ast: Don't preserve sign for integer An+B selectors.#829

Merged
keithamus merged 1 commit intomainfrom
css-ast-don-t-preserve-sign-for-integer-an-b-selectors
Jan 25, 2026
Merged

css_ast: Don't preserve sign for integer An+B selectors.#829
keithamus merged 1 commit intomainfrom
css-ast-don-t-preserve-sign-for-integer-an-b-selectors

Conversation

@keithamus
Copy link
Copy Markdown
Member

In #828 we introduced sign preservation to ensure An+B syntax was preserved
while still eliding redundant signs during minification. However we were a
little too conservative. An+B integer expressions like nth-child(+5) can be
equally represented by nth-child(5).

This change removes the preserve_sign() call on integer expressions, allowing
these to be properly minified.

In #828 we introduced sign preservation to ensure An+B syntax was preserved
while still eliding redundant signs during minification. However we were a
little too conservative. An+B integer expressions like `nth-child(+5)` can be
equally represented by `nth-child(5)`.

This change removes the preserve_sign() call on integer expressions, allowing
these to be properly minified.
@keithamus keithamus enabled auto-merge (squash) January 25, 2026 15:00
Copy link
Copy Markdown

@github-actions github-actions bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

All CI jobs have passed. Approving.

@keithamus keithamus merged commit fc73b33 into main Jan 25, 2026
17 checks passed
@keithamus keithamus deleted the css-ast-don-t-preserve-sign-for-integer-an-b-selectors branch January 25, 2026 15:07
github-actions bot pushed a commit that referenced this pull request Jan 25, 2026
## [0.0.15] - 2026-01-25

### Css_ast
- css_ast/csskit_derives: Add derive(NodeWithMetadata) (#824) ([#824](#824))
- css_ast/csskit_derive/csskit_proc_macro: Add "constrainable" generics. (#825) ([#825](#825))
- css_ast/css_lexer: Preserve sign in an+b, otherwise compact (#828) ([#828](#828))
- css_ast: Don't preserve sign for integer An+B selectors. (#829) ([#829](#829))

### Css_lexer
- csskit_transform/css_lexer: Check compacted lengths to determine if replacement is shorter. (#827) ([#827](#827))

[forcebuild]
@keithamus keithamus mentioned this pull request Jan 25, 2026
github-actions bot pushed a commit that referenced this pull request Jan 25, 2026
## [0.0.15] - 2026-01-25

### Css_ast
- css_ast/csskit_derives: Add derive(NodeWithMetadata) (#824) ([#824](#824))
- css_ast/csskit_derive/csskit_proc_macro: Add "constrainable" generics. (#825) ([#825](#825))
- css_ast/css_lexer: Preserve sign in an+b, otherwise compact (#828) ([#828](#828))
- css_ast: Don't preserve sign for integer An+B selectors. (#829) ([#829](#829))

### Css_lexer
- csskit_transform/css_lexer: Check compacted lengths to determine if replacement is shorter. (#827) ([#827](#827))
github-actions bot pushed a commit that referenced this pull request Jan 26, 2026
## [0.0.15] - 2026-01-26

### Css_ast
- css_ast/csskit_derives: Add derive(NodeWithMetadata) (#824) ([#824](#824))
- css_ast/csskit_derive/csskit_proc_macro: Add "constrainable" generics. (#825) ([#825](#825))
- css_ast/css_lexer: Preserve sign in an+b, otherwise compact (#828) ([#828](#828))
- css_ast: Don't preserve sign for integer An+B selectors. (#829) ([#829](#829))
- Regenerate css_ast/src/values from csswg drafts (#830) ([#830](#830))

### Css_lexer
- csskit_transform/css_lexer: Check compacted lengths to determine if replacement is shorter. (#827) ([#827](#827))

### Csskit
- chore(deps): update dependencies (patch) (#831) ([#831](#831))

[forcebuild]
github-actions bot pushed a commit that referenced this pull request Jan 26, 2026
## [0.0.15] - 2026-01-26

### Css_ast
- css_ast/csskit_derives: Add derive(NodeWithMetadata) (#824) ([#824](#824))
- css_ast/csskit_derive/csskit_proc_macro: Add "constrainable" generics. (#825) ([#825](#825))
- css_ast/css_lexer: Preserve sign in an+b, otherwise compact (#828) ([#828](#828))
- css_ast: Don't preserve sign for integer An+B selectors. (#829) ([#829](#829))
- Regenerate css_ast/src/values from csswg drafts (#830) ([#830](#830))

### Css_lexer
- csskit_transform/css_lexer: Check compacted lengths to determine if replacement is shorter. (#827) ([#827](#827))

### Csskit
- chore(deps): update dependencies (patch) (#831) ([#831](#831))
github-actions bot pushed a commit that referenced this pull request Jan 26, 2026
## [0.0.15] - 2026-01-26

### Css_ast
- css_ast/csskit_derives: Add derive(NodeWithMetadata) (#824) ([#824](#824))
- css_ast/csskit_derive/csskit_proc_macro: Add "constrainable" generics. (#825) ([#825](#825))
- css_ast/css_lexer: Preserve sign in an+b, otherwise compact (#828) ([#828](#828))
- css_ast: Don't preserve sign for integer An+B selectors. (#829) ([#829](#829))
- Regenerate css_ast/src/values from csswg drafts (#830) ([#830](#830))

### Css_lexer
- csskit_transform/css_lexer: Check compacted lengths to determine if replacement is shorter. (#827) ([#827](#827))

### Csskit
- chore(deps): update dependencies (patch) (#831) ([#831](#831))

### Csskit_vscode
- chore(deps): update dependency oxlint to v1.40.0 (#834) ([#834](#834))

[forcebuild]
github-actions bot pushed a commit that referenced this pull request Jan 26, 2026
## [0.0.15] - 2026-01-26

### Css_ast
- css_ast/csskit_derives: Add derive(NodeWithMetadata) (#824) ([#824](#824))
- css_ast/csskit_derive/csskit_proc_macro: Add "constrainable" generics. (#825) ([#825](#825))
- css_ast/css_lexer: Preserve sign in an+b, otherwise compact (#828) ([#828](#828))
- css_ast: Don't preserve sign for integer An+B selectors. (#829) ([#829](#829))
- Regenerate css_ast/src/values from csswg drafts (#830) ([#830](#830))

### Css_lexer
- csskit_transform/css_lexer: Check compacted lengths to determine if replacement is shorter. (#827) ([#827](#827))

### Csskit
- chore(deps): update dependencies (patch) (#831) ([#831](#831))

### Csskit_vscode
- chore(deps): update dependency oxlint to v1.40.0 (#834) ([#834](#834))
github-actions bot pushed a commit that referenced this pull request Jan 26, 2026
## [0.0.15] - 2026-01-26

### Css_ast
- css_ast/csskit_derives: Add derive(NodeWithMetadata) (#824) ([#824](#824))
- css_ast/csskit_derive/csskit_proc_macro: Add "constrainable" generics. (#825) ([#825](#825))
- css_ast/css_lexer: Preserve sign in an+b, otherwise compact (#828) ([#828](#828))
- css_ast: Don't preserve sign for integer An+B selectors. (#829) ([#829](#829))
- Regenerate css_ast/src/values from csswg drafts (#830) ([#830](#830))

### Css_lexer
- csskit_transform/css_lexer: Check compacted lengths to determine if replacement is shorter. (#827) ([#827](#827))
- css_lexer: De-duplicate escape sequence consumption (#835) ([#835](#835))

### Csskit
- chore(deps): update dependencies (patch) (#831) ([#831](#831))

### Csskit_vscode
- chore(deps): update dependency oxlint to v1.40.0 (#834) ([#834](#834))

[forcebuild]
github-actions bot pushed a commit that referenced this pull request Jan 26, 2026
## [0.0.15] - 2026-01-26

### Css_ast
- css_ast/csskit_derives: Add derive(NodeWithMetadata) (#824) ([#824](#824))
- css_ast/csskit_derive/csskit_proc_macro: Add "constrainable" generics. (#825) ([#825](#825))
- css_ast/css_lexer: Preserve sign in an+b, otherwise compact (#828) ([#828](#828))
- css_ast: Don't preserve sign for integer An+B selectors. (#829) ([#829](#829))
- Regenerate css_ast/src/values from csswg drafts (#830) ([#830](#830))

### Css_lexer
- csskit_transform/css_lexer: Check compacted lengths to determine if replacement is shorter. (#827) ([#827](#827))
- css_lexer: De-duplicate escape sequence consumption (#835) ([#835](#835))

### Csskit
- chore(deps): update dependencies (patch) (#831) ([#831](#831))

### Csskit_vscode
- chore(deps): update dependency oxlint to v1.40.0 (#834) ([#834](#834))
keithamus added a commit that referenced this pull request Jan 28, 2026
## [0.0.15] - 2026-01-26

### Css_ast
- css_ast/csskit_derives: Add derive(NodeWithMetadata) (#824) ([#824](#824))
- css_ast/csskit_derive/csskit_proc_macro: Add "constrainable" generics. (#825) ([#825](#825))
- css_ast/css_lexer: Preserve sign in an+b, otherwise compact (#828) ([#828](#828))
- css_ast: Don't preserve sign for integer An+B selectors. (#829) ([#829](#829))
- Regenerate css_ast/src/values from csswg drafts (#830) ([#830](#830))

### Css_lexer
- csskit_transform/css_lexer: Check compacted lengths to determine if replacement is shorter. (#827) ([#827](#827))
- css_lexer: De-duplicate escape sequence consumption (#835) ([#835](#835))

### Csskit
- chore(deps): update dependencies (patch) (#831) ([#831](#831))

### Csskit_vscode
- chore(deps): update dependency oxlint to v1.40.0 (#834) ([#834](#834))

[forcebuild]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant