diff options
Diffstat (limited to 'compiler/rustc_builtin_macros')
| -rw-r--r-- | compiler/rustc_builtin_macros/src/asm.rs | 1 | ||||
| -rw-r--r-- | compiler/rustc_builtin_macros/src/format.rs | 14 | ||||
| -rw-r--r-- | compiler/rustc_builtin_macros/src/util.rs | 5 |
3 files changed, 18 insertions, 2 deletions
diff --git a/compiler/rustc_builtin_macros/src/asm.rs b/compiler/rustc_builtin_macros/src/asm.rs index 238cc14ff0b..5062cf55bb9 100644 --- a/compiler/rustc_builtin_macros/src/asm.rs +++ b/compiler/rustc_builtin_macros/src/asm.rs @@ -531,6 +531,7 @@ fn expand_preparsed_asm( symbol: template_str, style: template_style, span: template_span, + .. } = { let ExpandResult::Ready(mac) = expr_to_spanned_string(ecx, template_expr, msg) else { return ExpandResult::Retry(()); diff --git a/compiler/rustc_builtin_macros/src/format.rs b/compiler/rustc_builtin_macros/src/format.rs index 5b3f08948a9..0112499c509 100644 --- a/compiler/rustc_builtin_macros/src/format.rs +++ b/compiler/rustc_builtin_macros/src/format.rs @@ -166,7 +166,12 @@ fn make_format_args( let MacroInput { fmtstr: efmt, mut args, is_direct_literal } = input; - let ExprToSpannedString { symbol: fmt_str, span: fmt_span, style: fmt_style } = { + let ExprToSpannedString { + symbol: fmt_str, + span: fmt_span, + style: fmt_style, + uncooked_symbol: uncooked_fmt_str, + } = { let ExpandResult::Ready(mac) = expr_to_spanned_string(ecx, efmt.clone(), msg) else { return ExpandResult::Retry(()); }; @@ -584,7 +589,12 @@ fn make_format_args( } } - ExpandResult::Ready(Ok(FormatArgs { span: fmt_span, template, arguments: args })) + ExpandResult::Ready(Ok(FormatArgs { + span: fmt_span, + template, + arguments: args, + uncooked_fmt_str, + })) } fn invalid_placeholder_type_error( diff --git a/compiler/rustc_builtin_macros/src/util.rs b/compiler/rustc_builtin_macros/src/util.rs index 9162e94eddb..38fec2bff14 100644 --- a/compiler/rustc_builtin_macros/src/util.rs +++ b/compiler/rustc_builtin_macros/src/util.rs @@ -63,6 +63,10 @@ pub(crate) struct ExprToSpannedString { pub symbol: Symbol, pub style: ast::StrStyle, pub span: Span, + /// The raw string literal, with no escaping or processing. + /// + /// Generally only useful for lints that care about the raw bytes the user wrote. + pub uncooked_symbol: (ast::token::LitKind, Symbol), } /// - `Ok` is returned when the conversion to a string literal is unsuccessful, @@ -100,6 +104,7 @@ pub(crate) fn expr_to_spanned_string<'a>( symbol: s, style, span: expr.span, + uncooked_symbol: (token_lit.kind, token_lit.symbol), })); } Ok(ast::LitKind::ByteStr(..)) => { |
