Skip to content

fix(lexer): Only allow horizontal whitespace in frontmatter #146106

Merged
bors merged 5 commits intorust-lang:masterfrom
epage:whitespace
Sep 3, 2025
Merged

fix(lexer): Only allow horizontal whitespace in frontmatter #146106
bors merged 5 commits intorust-lang:masterfrom
epage:whitespace

Conversation

@epage
Copy link
Contributor

@epage epage commented Sep 2, 2025

In writing up the reference for frontmatter, I realized that we probably
shouldn't be accepting Unicode Line Ending characters between the code
fence and infostring or trailing after the infostring or a code fence.

In digging into the unicode specification we use for Whitespace, it
divides it up into categories, so I'm deferring to what it says for
horizontal whitespace for what should be used within a line.

Note, I am leaving out support for Unicode Default Ignorable characters.
I figure that can be discussed outside of this change within the
reference and tracking issue.

Fixes #145971

Frontmatter tracking issue: #136889

In writing up the reference for frontmatter, I realized that we probably
shouldn't be accepting Unicode Line Ending characters between the code
fence and infostring or trailing after the infostring or a code fence.

In digging into the unicode specification we use for Whitespace, it
divides it up into categories, so I'm deferring to what it says for
horizontal whitespace for what should be used within a line.

Note, I am leaving out support for Unicde Default Ignorable characters.
I figure that can be discussed outside of this change within the
reference and tracking issue.
@epage epage added the F-frontmatter `#![feature(frontmatter)]` label Sep 2, 2025
@rustbot
Copy link
Collaborator

rustbot commented Sep 2, 2025

r? @nnethercote

rustbot has assigned @nnethercote.
They will have a look at your PR within the next two weeks and either review your PR or reassign to another reviewer.

Use r? to explicitly pick a reviewer

@rustbot rustbot added S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. T-compiler Relevant to the compiler team, which will review and decide on the PR/issue. labels Sep 2, 2025
@nnethercote
Copy link
Contributor

r? @fee1-dead

@rustbot rustbot assigned fee1-dead and unassigned nnethercote Sep 2, 2025
@fee1-dead
Copy link
Member

@bors r+ rollup

@bors
Copy link
Collaborator

bors commented Sep 3, 2025

📌 Commit 6f0da97 has been approved by fee1-dead

It is now in the queue for this repository.

@bors bors added S-waiting-on-bors Status: Waiting on bors to run and complete tests. Bors will change the label on completion. and removed S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. labels Sep 3, 2025
tgross35 added a commit to tgross35/rust that referenced this pull request Sep 3, 2025
fix(lexer): Only allow horizontal whitespace in frontmatter

In writing up the reference for frontmatter, I realized that we probably
shouldn't be accepting Unicode Line Ending characters between the code
fence and infostring or trailing after the infostring or a code fence.

In digging into the unicode specification we use for Whitespace, it
divides it up into categories, so I'm deferring to what it says for
horizontal whitespace for what should be used within a line.

Note, I am leaving out support for Unicode Default Ignorable characters.
I figure that can be discussed outside of this change within the
reference and tracking issue.

Fixes rust-lang#145971

Frontmatter tracking issue: rust-lang#136889
bors added a commit that referenced this pull request Sep 3, 2025
Rollup of 8 pull requests

Successful merges:

 - #139113 (unstable book: in a sanitizer example, check the code)
 - #145279 (Constify conversion traits (part 1))
 - #145414 (unicode-table-generator refactors)
 - #145823 (editorconfig: don't use nonexistent syntax)
 - #145944 (std: Start supporting WASIp2 natively )
 - #145961 (resolve: Avoid a regression from splitting prelude into two scopes)
 - #146032 (Explicity disable LSX feature for `loongarch64-unknown-none` target)
 - #146106 (fix(lexer): Only allow horizontal whitespace in frontmatter )

r? `@ghost`
`@rustbot` modify labels: rollup
bors added a commit that referenced this pull request Sep 3, 2025
Rollup of 8 pull requests

Successful merges:

 - #139113 (unstable book: in a sanitizer example, check the code)
 - #145279 (Constify conversion traits (part 1))
 - #145414 (unicode-table-generator refactors)
 - #145823 (editorconfig: don't use nonexistent syntax)
 - #145944 (std: Start supporting WASIp2 natively )
 - #145961 (resolve: Avoid a regression from splitting prelude into two scopes)
 - #146032 (Explicity disable LSX feature for `loongarch64-unknown-none` target)
 - #146106 (fix(lexer): Only allow horizontal whitespace in frontmatter )

r? `@ghost`
`@rustbot` modify labels: rollup
Zalathar added a commit to Zalathar/rust that referenced this pull request Sep 3, 2025
fix(lexer): Only allow horizontal whitespace in frontmatter

In writing up the reference for frontmatter, I realized that we probably
shouldn't be accepting Unicode Line Ending characters between the code
fence and infostring or trailing after the infostring or a code fence.

In digging into the unicode specification we use for Whitespace, it
divides it up into categories, so I'm deferring to what it says for
horizontal whitespace for what should be used within a line.

Note, I am leaving out support for Unicode Default Ignorable characters.
I figure that can be discussed outside of this change within the
reference and tracking issue.

Fixes rust-lang#145971

Frontmatter tracking issue: rust-lang#136889
bors added a commit that referenced this pull request Sep 3, 2025
Rollup of 9 pull requests

Successful merges:

 - #145279 (Constify conversion traits (part 1))
 - #145414 (unicode-table-generator refactors)
 - #145823 (editorconfig: don't use nonexistent syntax)
 - #145944 (std: Start supporting WASIp2 natively )
 - #145961 (resolve: Avoid a regression from splitting prelude into two scopes)
 - #146032 (Explicity disable LSX feature for `loongarch64-unknown-none` target)
 - #146106 (fix(lexer): Only allow horizontal whitespace in frontmatter )
 - #146112 (don't uppercase error messages)
 - #146154 (CI: rfl: move job forward to Linux v6.17-rc3 plus 2 commits)

r? `@ghost`
`@rustbot` modify labels: rollup
bors added a commit that referenced this pull request Sep 3, 2025
Rollup of 8 pull requests

Successful merges:

 - #145279 (Constify conversion traits (part 1))
 - #145414 (unicode-table-generator refactors)
 - #145823 (editorconfig: don't use nonexistent syntax)
 - #145944 (std: Start supporting WASIp2 natively )
 - #145961 (resolve: Avoid a regression from splitting prelude into two scopes)
 - #146032 (Explicity disable LSX feature for `loongarch64-unknown-none` target)
 - #146106 (fix(lexer): Only allow horizontal whitespace in frontmatter )
 - #146154 (CI: rfl: move job forward to Linux v6.17-rc3 plus 2 commits)

r? `@ghost`
`@rustbot` modify labels: rollup
@bors bors merged commit 56213a5 into rust-lang:master Sep 3, 2025
10 checks passed
@rustbot rustbot added this to the 1.91.0 milestone Sep 3, 2025
rust-timer added a commit that referenced this pull request Sep 3, 2025
Rollup merge of #146106 - epage:whitespace, r=fee1-dead

fix(lexer): Only allow horizontal whitespace in frontmatter

In writing up the reference for frontmatter, I realized that we probably
shouldn't be accepting Unicode Line Ending characters between the code
fence and infostring or trailing after the infostring or a code fence.

In digging into the unicode specification we use for Whitespace, it
divides it up into categories, so I'm deferring to what it says for
horizontal whitespace for what should be used within a line.

Note, I am leaving out support for Unicode Default Ignorable characters.
I figure that can be discussed outside of this change within the
reference and tracking issue.

Fixes #145971

Frontmatter tracking issue: #136889
@epage epage deleted the whitespace branch September 4, 2025 13:38
epage added a commit to epage/cargo that referenced this pull request Sep 16, 2025
This is to align with rust-lang/rust#146106.

While no tests were affected by this,
I definitely broke a lot of tests when making this change.
epage added a commit to epage/cargo that referenced this pull request Sep 19, 2025
This is to align with rust-lang/rust#146106.

While no tests were affected by this,
I definitely broke a lot of tests when making this change.
github-merge-queue bot pushed a commit to rust-lang/cargo that referenced this pull request Sep 21, 2025
### What does this PR try to resolve?

This is to align with rust-lang/rust#146106 and is part of #12207.

### How to test and review this PR?

While no tests were affected by this,
I definitely broke a lot of tests when making this change.
@epage epage mentioned this pull request Oct 23, 2025
10 tasks
traviscross added a commit to traviscross/rust that referenced this pull request Mar 4, 2026
The comment on `is_horizontal_whitespace` says "This is
Pattern_White_Space", but the function matches only tab (U+0009) and
space (U+0020) -- two of the eleven `Pattern_White_Space` code points.
This has been the case since rust-lang#146106, which narrowed the
set from full `Pattern_White_Space` to the horizontal subset.

The correct characterization is that this is the horizontal space
subset of `Pattern_White_Space`, as categorized by UAX 31,
Section 4.1, which partitions `Pattern_White_Space` into line endings,
ignorable format controls, and horizontal space.
JonathanBrouwer added a commit to JonathanBrouwer/rust that referenced this pull request Mar 5, 2026
…tespace-comment, r=Kivooeo,epage

Fix comment on `is_horizontal_whitespace`

The comment on `is_horizontal_whitespace` says "This is Pattern_White_Space", but the function matches only tab (U+0009) and space (U+0020) -- two of the eleven `Pattern_White_Space` code points. This has been the case since rust-lang#146106, which narrowed the set from full `Pattern_White_Space` to the horizontal subset.

The correct characterization is that this is the horizontal space subset of `Pattern_White_Space`, as categorized by UAX 31, Section 4.1, which partitions `Pattern_White_Space` into line endings, ignorable format controls, and horizontal space.

r? fee1-dead (reviewer on rust-lang#146106)

cc @ehuss @epage
rust-timer added a commit that referenced this pull request Mar 5, 2026
Rollup merge of #153385 - traviscross:TC/fix-frontmatter-whitespace-comment, r=Kivooeo,epage

Fix comment on `is_horizontal_whitespace`

The comment on `is_horizontal_whitespace` says "This is Pattern_White_Space", but the function matches only tab (U+0009) and space (U+0020) -- two of the eleven `Pattern_White_Space` code points. This has been the case since #146106, which narrowed the set from full `Pattern_White_Space` to the horizontal subset.

The correct characterization is that this is the horizontal space subset of `Pattern_White_Space`, as categorized by UAX 31, Section 4.1, which partitions `Pattern_White_Space` into line endings, ignorable format controls, and horizontal space.

r? fee1-dead (reviewer on #146106)

cc @ehuss @epage
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

F-frontmatter `#![feature(frontmatter)]` S-waiting-on-bors Status: Waiting on bors to run and complete tests. Bors will change the label on completion. T-compiler Relevant to the compiler team, which will review and decide on the PR/issue.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

feature(frontmatter) allows vertical whitespace where only horizontal whitespace is intended

6 participants