1
Fork 0

Replace rustc_lexer/unescape with rustc-literal-escaper crate

This commit is contained in:
Guillaume Gomez 2025-04-04 14:44:45 +02:00
parent a4166dabaa
commit aff2bc7a88
12 changed files with 22 additions and 743 deletions

View file

@ -6,6 +6,7 @@ edition = "2024"
[dependencies]
# tidy-alphabetical-start
rustc_lexer = { path = "../rustc_lexer" }
rustc-literal-escaper = "0.0.1"
# tidy-alphabetical-end
[target.'cfg(target_pointer_width = "64")'.dev-dependencies]

View file

@ -18,7 +18,7 @@
pub use Alignment::*;
pub use Count::*;
pub use Position::*;
use rustc_lexer::unescape;
use rustc_literal_escaper::{Mode, unescape_unicode};
// Note: copied from rustc_span
/// Range inside of a `Span` used for diagnostics when we only have access to relative positions.
@ -1094,11 +1094,9 @@ fn find_width_map_from_snippet(
fn unescape_string(string: &str) -> Option<String> {
let mut buf = String::new();
let mut ok = true;
unescape::unescape_unicode(string, unescape::Mode::Str, &mut |_, unescaped_char| {
match unescaped_char {
Ok(c) => buf.push(c),
Err(_) => ok = false,
}
unescape_unicode(string, Mode::Str, &mut |_, unescaped_char| match unescaped_char {
Ok(c) => buf.push(c),
Err(_) => ok = false,
});
ok.then_some(buf)