diff options
| author | Ed Page <eopage@gmail.com> | 2025-08-22 09:26:19 -0500 |
|---|---|---|
| committer | Ed Page <eopage@gmail.com> | 2025-08-22 09:26:19 -0500 |
| commit | f43f974b9e14af328b7982d6320cc4d7a9104410 (patch) | |
| tree | 863748bf3210571671bda093539d26a72b339e50 | |
| parent | 9b0ddec2a8f3ed9a72df14921b3aa164993dd83b (diff) | |
| download | rust-f43f974b9e14af328b7982d6320cc4d7a9104410.tar.gz rust-f43f974b9e14af328b7982d6320cc4d7a9104410.zip | |
fix(lexer): Allow '-' in the infostring continue set
This more closely matches the RFC and what our T-lang contact has asked for, see https://github.com/rust-lang/rust/issues/136889#issuecomment-3212715312
| -rw-r--r-- | compiler/rustc_lexer/src/lib.rs | 4 | ||||
| -rw-r--r-- | tests/ui/frontmatter/hyphen-in-infostring-non-leading.rs | 4 | ||||
| -rw-r--r-- | tests/ui/frontmatter/hyphen-in-infostring-non-leading.stderr | 10 |
3 files changed, 4 insertions, 14 deletions
diff --git a/compiler/rustc_lexer/src/lib.rs b/compiler/rustc_lexer/src/lib.rs index e80196ed567..483cc3e93dc 100644 --- a/compiler/rustc_lexer/src/lib.rs +++ b/compiler/rustc_lexer/src/lib.rs @@ -540,11 +540,11 @@ impl Cursor<'_> { // whitespace between the opening and the infostring. self.eat_while(|ch| ch != '\n' && is_whitespace(ch)); - // copied from `eat_identifier`, but allows `.` in infostring to allow something like + // copied from `eat_identifier`, but allows `-` and `.` in infostring to allow something like // `---Cargo.toml` as a valid opener if is_id_start(self.first()) { self.bump(); - self.eat_while(|c| is_id_continue(c) || c == '.'); + self.eat_while(|c| is_id_continue(c) || c == '-' || c == '.'); } self.eat_while(|ch| ch != '\n' && is_whitespace(ch)); diff --git a/tests/ui/frontmatter/hyphen-in-infostring-non-leading.rs b/tests/ui/frontmatter/hyphen-in-infostring-non-leading.rs index ccb80d8799a..35e7b96ff87 100644 --- a/tests/ui/frontmatter/hyphen-in-infostring-non-leading.rs +++ b/tests/ui/frontmatter/hyphen-in-infostring-non-leading.rs @@ -1,8 +1,8 @@ --- Cargo-toml -//~^ ERROR: invalid infostring for frontmatter --- -// infostrings cannot have hyphens +// infostrings can contain hyphens as long as a hyphen isn't the first character. +//@ check-pass #![feature(frontmatter)] diff --git a/tests/ui/frontmatter/hyphen-in-infostring-non-leading.stderr b/tests/ui/frontmatter/hyphen-in-infostring-non-leading.stderr deleted file mode 100644 index 959cf74e327..00000000000 --- a/tests/ui/frontmatter/hyphen-in-infostring-non-leading.stderr +++ /dev/null @@ -1,10 +0,0 @@ -error: invalid infostring for frontmatter - --> $DIR/hyphen-in-infostring-non-leading.rs:1:4 - | -LL | --- Cargo-toml - | ^^^^^^^^^^^ - | - = note: frontmatter infostrings must be a single identifier immediately following the opening - -error: aborting due to 1 previous error - |
