Skip to content
This repository was archived by the owner on May 28, 2025. It is now read-only.

Commit 0e11536

Browse files
authored
Rollup merge of rust-lang#136355 - GuillaumeGomez:proc-macro_add_value_retrieval_methods, r=Amanieu
Add `*_value` methods to proc_macro lib This is the implementation of rust-lang/libs-team#459. It allows to get the actual value (unescaped) of the different string literals. Part of rust-lang#136652. r? libs-api
2 parents 37749f8 + 417bfe2 commit 0e11536

File tree

26 files changed

+252
-14
lines changed

26 files changed

+252
-14
lines changed

Cargo.lock

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2082,6 +2082,13 @@ version = "0.7.4"
20822082
source = "registry+https://github.com/rust-lang/crates.io-index"
20832083
checksum = "4ee93343901ab17bd981295f2cf0026d4ad018c7c31ba84549a4ddbb47a45104"
20842084

2085+
[[package]]
2086+
name = "literal-escaper"
2087+
version = "0.0.0"
2088+
dependencies = [
2089+
"rustc-std-workspace-std 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)",
2090+
]
2091+
20852092
[[package]]
20862093
name = "lld-wrapper"
20872094
version = "0.1.0"
@@ -3134,6 +3141,12 @@ version = "1.0.1"
31343141
name = "rustc-std-workspace-std"
31353142
version = "1.0.1"
31363143

3144+
[[package]]
3145+
name = "rustc-std-workspace-std"
3146+
version = "1.0.1"
3147+
source = "registry+https://github.com/rust-lang/crates.io-index"
3148+
checksum = "aba676a20abe46e5b0f1b0deae474aaaf31407e6c71147159890574599da04ef"
3149+
31373150
[[package]]
31383151
name = "rustc_abi"
31393152
version = "0.0.0"
@@ -3172,6 +3185,7 @@ name = "rustc_ast"
31723185
version = "0.0.0"
31733186
dependencies = [
31743187
"bitflags",
3188+
"literal-escaper",
31753189
"memchr",
31763190
"rustc_ast_ir",
31773191
"rustc_data_structures",
@@ -3881,6 +3895,7 @@ name = "rustc_lexer"
38813895
version = "0.0.0"
38823896
dependencies = [
38833897
"expect-test",
3898+
"literal-escaper",
38843899
"memchr",
38853900
"unicode-properties",
38863901
"unicode-xid",
@@ -4143,6 +4158,7 @@ name = "rustc_parse"
41434158
version = "0.0.0"
41444159
dependencies = [
41454160
"bitflags",
4161+
"literal-escaper",
41464162
"rustc_ast",
41474163
"rustc_ast_pretty",
41484164
"rustc_data_structures",
@@ -4165,6 +4181,7 @@ dependencies = [
41654181
name = "rustc_parse_format"
41664182
version = "0.0.0"
41674183
dependencies = [
4184+
"literal-escaper",
41684185
"rustc_index",
41694186
"rustc_lexer",
41704187
]

compiler/rustc_ast/Cargo.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ edition = "2024"
66
[dependencies]
77
# tidy-alphabetical-start
88
bitflags = "2.4.1"
9+
literal-escaper = { path = "../../library/literal-escaper" }
910
memchr = "2.7.4"
1011
rustc_ast_ir = { path = "../rustc_ast_ir" }
1112
rustc_data_structures = { path = "../rustc_data_structures" }

compiler/rustc_ast/src/util/literal.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
33
use std::{ascii, fmt, str};
44

5-
use rustc_lexer::unescape::{
5+
use literal_escaper::{
66
MixedUnit, Mode, byte_from_char, unescape_byte, unescape_char, unescape_mixed, unescape_unicode,
77
};
88
use rustc_span::{Span, Symbol, kw, sym};

compiler/rustc_lexer/Cargo.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ Rust lexer used by rustc. No stability guarantees are provided.
1616
[dependencies]
1717
memchr = "2.7.4"
1818
unicode-xid = "0.2.0"
19+
literal-escaper = { path = "../../library/literal-escaper" }
1920

2021
[dependencies.unicode-properties]
2122
version = "0.1.0"

compiler/rustc_lexer/src/lib.rs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,11 +26,13 @@
2626
// tidy-alphabetical-end
2727

2828
mod cursor;
29-
pub mod unescape;
3029

3130
#[cfg(test)]
3231
mod tests;
3332

33+
// FIXME: This is needed for rust-analyzer. Remove this dependency once rust-analyzer uses
34+
// `literal-escaper`.
35+
pub use literal_escaper as unescape;
3436
use unicode_properties::UnicodeEmoji;
3537
pub use unicode_xid::UNICODE_VERSION as UNICODE_XID_VERSION;
3638

compiler/rustc_parse/Cargo.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ edition = "2024"
66
[dependencies]
77
# tidy-alphabetical-start
88
bitflags = "2.4.1"
9+
literal-escaper = { path = "../../library/literal-escaper" }
910
rustc_ast = { path = "../rustc_ast" }
1011
rustc_ast_pretty = { path = "../rustc_ast_pretty" }
1112
rustc_data_structures = { path = "../rustc_data_structures" }

compiler/rustc_parse/src/lexer/mod.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
11
use std::ops::Range;
22

3+
use literal_escaper::{self, EscapeError, Mode};
34
use rustc_ast::ast::{self, AttrStyle};
45
use rustc_ast::token::{self, CommentKind, Delimiter, IdentIsRaw, Token, TokenKind};
56
use rustc_ast::tokenstream::TokenStream;
67
use rustc_ast::util::unicode::contains_text_flow_control_chars;
78
use rustc_errors::codes::*;
89
use rustc_errors::{Applicability, Diag, DiagCtxtHandle, StashKey};
9-
use rustc_lexer::unescape::{self, EscapeError, Mode};
1010
use rustc_lexer::{Base, Cursor, DocStyle, LiteralKind, RawStrError};
1111
use rustc_session::lint::BuiltinLintDiag;
1212
use rustc_session::lint::builtin::{
@@ -970,7 +970,7 @@ impl<'psess, 'src> Lexer<'psess, 'src> {
970970
postfix_len: u32,
971971
) -> (token::LitKind, Symbol) {
972972
self.cook_common(kind, mode, start, end, prefix_len, postfix_len, |src, mode, callback| {
973-
unescape::unescape_unicode(src, mode, &mut |span, result| {
973+
literal_escaper::unescape_unicode(src, mode, &mut |span, result| {
974974
callback(span, result.map(drop))
975975
})
976976
})
@@ -986,7 +986,7 @@ impl<'psess, 'src> Lexer<'psess, 'src> {
986986
postfix_len: u32,
987987
) -> (token::LitKind, Symbol) {
988988
self.cook_common(kind, mode, start, end, prefix_len, postfix_len, |src, mode, callback| {
989-
unescape::unescape_mixed(src, mode, &mut |span, result| {
989+
literal_escaper::unescape_mixed(src, mode, &mut |span, result| {
990990
callback(span, result.map(drop))
991991
})
992992
})

compiler/rustc_parse/src/lexer/unescape_error_reporting.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,8 @@
33
use std::iter::once;
44
use std::ops::Range;
55

6+
use literal_escaper::{EscapeError, Mode};
67
use rustc_errors::{Applicability, DiagCtxtHandle, ErrorGuaranteed};
7-
use rustc_lexer::unescape::{EscapeError, Mode};
88
use rustc_span::{BytePos, Span};
99
use tracing::debug;
1010

compiler/rustc_parse/src/parser/expr.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ use core::ops::{Bound, ControlFlow};
66
use ast::mut_visit::{self, MutVisitor};
77
use ast::token::{IdentIsRaw, MetaVarKind};
88
use ast::{CoroutineKind, ForLoopKind, GenBlockKind, MatchKind, Pat, Path, PathSegment, Recovered};
9+
use literal_escaper::unescape_char;
910
use rustc_ast::ptr::P;
1011
use rustc_ast::token::{self, Delimiter, Token, TokenKind};
1112
use rustc_ast::tokenstream::TokenTree;
@@ -21,7 +22,6 @@ use rustc_ast::{
2122
use rustc_ast_pretty::pprust;
2223
use rustc_data_structures::stack::ensure_sufficient_stack;
2324
use rustc_errors::{Applicability, Diag, PResult, StashKey, Subdiagnostic};
24-
use rustc_lexer::unescape::unescape_char;
2525
use rustc_macros::Subdiagnostic;
2626
use rustc_session::errors::{ExprParenthesesNeeded, report_lit_error};
2727
use rustc_session::lint::BuiltinLintDiag;

compiler/rustc_parse_format/Cargo.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ edition = "2024"
55

66
[dependencies]
77
# tidy-alphabetical-start
8+
literal-escaper = { path = "../../library/literal-escaper" }
89
rustc_index = { path = "../rustc_index", default-features = false }
910
rustc_lexer = { path = "../rustc_lexer" }
1011
# tidy-alphabetical-end

0 commit comments

Comments
 (0)