Rollup merge of #142032 - matthewjasper:frontmatter-lexing, r=fee1-dead

Fix parsing of frontmatters with inner hyphens

closes rust-lang/rust#141483

r? fee1-dead
This commit is contained in:
Matthias Krüger 2025-06-05 16:02:04 +02:00 committed by GitHub
commit e80eadafa5
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
3 changed files with 24 additions and 1 deletions

View file

@ -545,11 +545,12 @@ impl Cursor<'_> {
let mut s = self.as_str();
let mut found = false;
let mut size = 0;
while let Some(closing) = s.find(&"-".repeat(length_opening as usize)) {
let preceding_chars_start = s[..closing].rfind("\n").map_or(0, |i| i + 1);
if s[preceding_chars_start..closing].chars().all(is_whitespace) {
// candidate found
self.bump_bytes(closing);
self.bump_bytes(size + closing);
// in case like
// ---cargo
// --- blahblah
@ -562,6 +563,7 @@ impl Cursor<'_> {
break;
} else {
s = &s[closing + length_opening as usize..];
size += closing + length_opening as usize;
}
}

View file

@ -0,0 +1,10 @@
---
x ---🚧
---
// Regression test for #141483
//@check-pass
#![feature(frontmatter)]
fn main() {}

View file

@ -0,0 +1,11 @@
---
x ---y
---
// Test that hypens are allowed inside frontmatters if there is some
// non-whitespace character preceding them.
//@check-pass
#![feature(frontmatter)]
fn main() {}