diff options
| author | bors <bors@rust-lang.org> | 2025-09-13 10:43:09 +0000 |
|---|---|---|
| committer | bors <bors@rust-lang.org> | 2025-09-13 10:43:09 +0000 |
| commit | b50f345a2f3f49764024cabc30ef99e15c0240f7 (patch) | |
| tree | 542d89dfb423203f19a9ce2345be87bb2ef7f0cb /compiler/rustc_builtin_macros/src/format.rs | |
| parent | 064cc81354a940e297a1be4dfa9e26759c8431be (diff) | |
| parent | c4539b2d58d97093fc08a42561397fa98e75c684 (diff) | |
| download | rust-b50f345a2f3f49764024cabc30ef99e15c0240f7.tar.gz rust-b50f345a2f3f49764024cabc30ef99e15c0240f7.zip | |
Auto merge of #146499 - jhpratt:rollup-ufflehe, r=jhpratt
Rollup of 5 pull requests
Successful merges:
- rust-lang/rust#144498 (Add --print target-spec-json-schema)
- rust-lang/rust#145471 (Stabilize BTree{Map,Set}::extract_if)
- rust-lang/rust#145896 (Rehome 30 `tests/ui/issues/` tests to other subdirectories under `tests/ui/` [rust-lang/rust#3 of Batch rust-lang/rust#2])
- rust-lang/rust#146450 (bootstrap: rustdoc-js tests can now be filtered by js files)
- rust-lang/rust#146456 (Fix panic and incorrectly suggested examples in `format_args` macro.)
r? `@ghost`
`@rustbot` modify labels: rollup
Diffstat (limited to 'compiler/rustc_builtin_macros/src/format.rs')
| -rw-r--r-- | compiler/rustc_builtin_macros/src/format.rs | 14 |
1 files changed, 10 insertions, 4 deletions
diff --git a/compiler/rustc_builtin_macros/src/format.rs b/compiler/rustc_builtin_macros/src/format.rs index a6c8e7d29cc..d70888205a5 100644 --- a/compiler/rustc_builtin_macros/src/format.rs +++ b/compiler/rustc_builtin_macros/src/format.rs @@ -569,6 +569,7 @@ fn make_format_args( detect_foreign_fmt, str_style, fmt_str, + uncooked_fmt_str.1.as_str(), fmt_span, ); } @@ -650,6 +651,7 @@ fn report_missing_placeholders( detect_foreign_fmt: bool, str_style: Option<usize>, fmt_str: &str, + uncooked_fmt_str: &str, fmt_span: Span, ) { let mut diag = if let &[(span, named)] = &unused[..] { @@ -773,16 +775,20 @@ fn report_missing_placeholders( diag.note(format!("consider adding {} format specifiers", unused.len())); } } else { - let original_fmt_str = - if fmt_str.len() >= 1 { &fmt_str[..fmt_str.len() - 1] } else { "" }; - let msg = if unused.len() == 1 { "a format specifier".to_string() } else { format!("{} format specifiers", unused.len()) }; - let sugg = format!("\"{}{}\"", original_fmt_str, "{}".repeat(unused.len())); + let sugg = match str_style { + None => format!("\"{}{}\"", uncooked_fmt_str, "{}".repeat(unused.len())), + Some(n_hashes) => format!( + "r{hashes}\"{uncooked_fmt_str}{fmt_specifiers}\"{hashes}", + hashes = "#".repeat(n_hashes), + fmt_specifiers = "{}".repeat(unused.len()) + ), + }; let msg = format!("format specifiers use curly braces, consider adding {msg}"); diag.span_suggestion_verbose(fmt_span, msg, sugg, Applicability::MaybeIncorrect); |
