Skip to content

Commit

Permalink
Auto merge of rust-lang#136585 - gvozdvmozgu:memchr-eat-until-lexer, …
Browse files Browse the repository at this point in the history
…r=<try>

implement `eat_until` leveraging memchr in lexer
  • Loading branch information
bors committed Feb 5, 2025
2 parents 820bfff + 9f469eb commit bc87f15
Show file tree
Hide file tree
Showing 4 changed files with 11 additions and 2 deletions.
1 change: 1 addition & 0 deletions Cargo.lock
Original file line number Diff line number Diff line change
Expand Up @@ -4064,6 +4064,7 @@ name = "rustc_lexer"
version = "0.0.0"
dependencies = [
"expect-test",
"memchr",
"unicode-properties",
"unicode-xid",
]
Expand Down
1 change: 1 addition & 0 deletions compiler/rustc_lexer/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ Rust lexer used by rustc. No stability guarantees are provided.

# Note that this crate purposefully does not depend on other rustc crates
[dependencies]
memchr = "2.7.4"
unicode-xid = "0.2.0"

[dependencies.unicode-properties]
Expand Down
7 changes: 7 additions & 0 deletions compiler/rustc_lexer/src/cursor.rs
Original file line number Diff line number Diff line change
Expand Up @@ -103,4 +103,11 @@ impl<'a> Cursor<'a> {
self.bump();
}
}

pub(crate) fn eat_until(&mut self, byte: u8) {
self.chars = match memchr::memchr(byte, self.as_str().as_bytes()) {
Some(index) => self.as_str()[index..].chars(),
None => "".chars(),
}
}
}
4 changes: 2 additions & 2 deletions compiler/rustc_lexer/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -483,7 +483,7 @@ impl Cursor<'_> {
_ => None,
};

self.eat_while(|c| c != '\n');
self.eat_until(b'\n');
LineComment { doc_style }
}

Expand Down Expand Up @@ -888,7 +888,7 @@ impl Cursor<'_> {
// Skip the string contents and on each '#' character met, check if this is
// a raw string termination.
loop {
self.eat_while(|c| c != '"');
self.eat_until(b'"');

if self.is_eof() {
return Err(RawStrError::NoTerminator {
Expand Down

0 comments on commit bc87f15

Please sign in to comment.