diff options
| author | Mara Bos <m-ou.se@m-ou.se> | 2025-03-30 10:35:59 +0200 |
|---|---|---|
| committer | Mara Bos <m-ou.se@m-ou.se> | 2025-03-30 10:42:00 +0200 |
| commit | cc5ee70b1a51bf30e85d261cc6e485eb3431bcac (patch) | |
| tree | b4f0a08745c3211f06070f0ce065b38bb1cfba81 /compiler/rustc_ast_lowering/src | |
| parent | 5cc60728e7ee10eb2ae5f61f7d412d9805b22f0c (diff) | |
| download | rust-cc5ee70b1a51bf30e85d261cc6e485eb3431bcac.tar.gz rust-cc5ee70b1a51bf30e85d261cc6e485eb3431bcac.zip | |
Simplify expansion for format_args!().
Instead of calling new(), we can just use a struct expression directly.
Before:
Placeholder::new(…, …, …, …)
After:
Placeholder {
position: …,
flags: …,
width: …,
precision: …,
}
Diffstat (limited to 'compiler/rustc_ast_lowering/src')
| -rw-r--r-- | compiler/rustc_ast_lowering/src/format.rs | 28 |
1 files changed, 13 insertions, 15 deletions
diff --git a/compiler/rustc_ast_lowering/src/format.rs b/compiler/rustc_ast_lowering/src/format.rs index 343895984ca..0de0319c667 100644 --- a/compiler/rustc_ast_lowering/src/format.rs +++ b/compiler/rustc_ast_lowering/src/format.rs @@ -323,14 +323,12 @@ fn make_count<'hir>( /// Generates /// /// ```text -/// <core::fmt::rt::Placeholder::new( -/// …usize, // position -/// '…', // fill -/// <core::fmt::rt::Alignment>::…, // alignment -/// …u32, // flags -/// <core::fmt::rt::Count::…>, // width -/// <core::fmt::rt::Count::…>, // precision -/// ) +/// <core::fmt::rt::Placeholder { +/// position: …usize, +/// flags: …u32, +/// precision: <core::fmt::rt::Count::…>, +/// width: <core::fmt::rt::Count::…>, +/// } /// ``` fn make_format_spec<'hir>( ctx: &mut LoweringContext<'_, 'hir>, @@ -384,13 +382,13 @@ fn make_format_spec<'hir>( let flags = ctx.expr_u32(sp, flags); let precision = make_count(ctx, sp, precision, argmap); let width = make_count(ctx, sp, width, argmap); - let format_placeholder_new = ctx.arena.alloc(ctx.expr_lang_item_type_relative( - sp, - hir::LangItem::FormatPlaceholder, - sym::new, - )); - let args = ctx.arena.alloc_from_iter([position, flags, precision, width]); - ctx.expr_call_mut(sp, format_placeholder_new, args) + let position = ctx.expr_field(Ident::new(sym::position, sp), ctx.arena.alloc(position), sp); + let flags = ctx.expr_field(Ident::new(sym::flags, sp), ctx.arena.alloc(flags), sp); + let precision = ctx.expr_field(Ident::new(sym::precision, sp), ctx.arena.alloc(precision), sp); + let width = ctx.expr_field(Ident::new(sym::width, sp), ctx.arena.alloc(width), sp); + let placeholder = ctx.arena.alloc(hir::QPath::LangItem(hir::LangItem::FormatPlaceholder, sp)); + let fields = ctx.arena.alloc_from_iter([position, flags, precision, width]); + ctx.expr(sp, hir::ExprKind::Struct(placeholder, fields, hir::StructTailExpr::None)) } fn expand_format_args<'hir>( |
