Make parsed string literal fields named
This commit is contained in:
parent
54e33bbdec
commit
c6afe82b8a
3 changed files with 23 additions and 9 deletions
|
@ -17,7 +17,7 @@ use rustc_parse_format as parse;
|
|||
use rustc_span::{BytePos, ErrorGuaranteed, Ident, InnerSpan, Span, Symbol};
|
||||
|
||||
use crate::errors;
|
||||
use crate::util::expr_to_spanned_string;
|
||||
use crate::util::{ExprToSpannedString, expr_to_spanned_string};
|
||||
|
||||
// The format_args!() macro is expanded in three steps:
|
||||
// 1. First, `parse_args` will parse the `(literal, arg, arg, name=arg, name=arg)` syntax,
|
||||
|
@ -166,13 +166,13 @@ fn make_format_args(
|
|||
|
||||
let MacroInput { fmtstr: efmt, mut args, is_direct_literal } = input;
|
||||
|
||||
let (fmt_str, fmt_style, fmt_span) = {
|
||||
let ExprToSpannedString { symbol: fmt_str, span: fmt_span, style: fmt_style } = {
|
||||
let ExpandResult::Ready(mac) = expr_to_spanned_string(ecx, efmt.clone(), msg) else {
|
||||
return ExpandResult::Retry(());
|
||||
};
|
||||
match mac {
|
||||
Ok(mut fmt) if append_newline => {
|
||||
fmt.0 = Symbol::intern(&format!("{}\n", fmt.0));
|
||||
fmt.symbol = Symbol::intern(&format!("{}\n", fmt.symbol));
|
||||
fmt
|
||||
}
|
||||
Ok(fmt) => fmt,
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue