From b7678d48b8c168bbbc0c34911bb38c8cd484e0ee Mon Sep 17 00:00:00 2001 From: Mara Bos Date: Fri, 13 Jan 2023 18:59:21 +0100 Subject: [PATCH] Only inline `{}` string literals in format_args. Placeholders like {:123} would incorrectly get inlined. --- compiler/rustc_ast_lowering/src/format.rs | 1 + 1 file changed, 1 insertion(+) diff --git a/compiler/rustc_ast_lowering/src/format.rs b/compiler/rustc_ast_lowering/src/format.rs index c21fb3a4cfb..96ca81d823b 100644 --- a/compiler/rustc_ast_lowering/src/format.rs +++ b/compiler/rustc_ast_lowering/src/format.rs @@ -124,6 +124,7 @@ fn inline_literals(mut fmt: Cow<'_, FormatArgs>) -> Cow<'_, FormatArgs> { let FormatArgsPiece::Placeholder(placeholder) = &fmt.template[i] else { continue }; let Ok(arg_index) = placeholder.argument.index else { continue }; if let FormatTrait::Display = placeholder.format_trait + && placeholder.format_options == Default::default() && let arg = fmt.arguments.all_args()[arg_index].expr.peel_parens_and_refs() && let ExprKind::Lit(lit) = arg.kind && let token::LitKind::Str | token::LitKind::StrRaw(_) = lit.kind