1
Fork 0

Account for format_args in HiddenUnicodeCodepoints lint

This commit is contained in:
Michael Goulet 2024-12-31 05:03:22 +00:00
parent c6afe82b8a
commit ea291e5b5f
9 changed files with 82 additions and 34 deletions

View file

@ -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(());

View file

@ -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(

View file

@ -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(..)) => {