diff options
| author | IoaNNUwU <ioannxd@gmail.com> | 2025-09-08 19:15:35 +0200 |
|---|---|---|
| committer | IoaNNUwU <ioannxd@gmail.com> | 2025-09-08 19:19:59 +0200 |
| commit | 43a6f56ca78295164dbf964695a43be7e35b1994 (patch) | |
| tree | 17dea96b5f4fd951d370e58c826caa3033eee443 | |
| parent | 1e733b389192b48110779bc1cd8edcaed7c43b0e (diff) | |
| download | rust-43a6f56ca78295164dbf964695a43be7e35b1994.tar.gz rust-43a6f56ca78295164dbf964695a43be7e35b1994.zip | |
Apply requested changes
| -rw-r--r-- | compiler/rustc_builtin_macros/src/format.rs | 44 | ||||
| -rw-r--r-- | tests/ui/fmt/ifmt-bad-arg.stderr | 6 | ||||
| -rw-r--r-- | tests/ui/macros/format-unused-lables.stderr | 9 | ||||
| -rw-r--r-- | tests/ui/mir/unsized-extern-static.stderr | 3 | ||||
| -rw-r--r-- | tests/ui/suggestions/missing-format-specifiers-issue-68293.rs | 4 | ||||
| -rw-r--r-- | tests/ui/suggestions/missing-format-specifiers-issue-68293.stderr | 6 |
6 files changed, 25 insertions, 47 deletions
diff --git a/compiler/rustc_builtin_macros/src/format.rs b/compiler/rustc_builtin_macros/src/format.rs index e5f73188dbd..a6c8e7d29cc 100644 --- a/compiler/rustc_builtin_macros/src/format.rs +++ b/compiler/rustc_builtin_macros/src/format.rs @@ -768,38 +768,24 @@ fn report_missing_placeholders( // Show example if user didn't use any format specifiers let show_example = used.iter().all(|used| !used); - if !show_example && unused.len() > 1 { - diag.note(format!("consider adding {} format specifiers", unused.len())); - } - - let original_fmt_str = if fmt_str.len() >= 1 { &fmt_str[..fmt_str.len() - 1] } else { "" }; - - if show_example && unused.len() == 1 { - diag.note("format specifiers use curly braces: `{}`"); + if !show_example { + if unused.len() > 1 { + 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 { "" }; - diag.span_suggestion_verbose( - fmt_span, - "consider adding format specifier", - format!("\"{}{{}}\"", original_fmt_str), - Applicability::MaybeIncorrect, - ); - } + let msg = if unused.len() == 1 { + "a format specifier".to_string() + } else { + format!("{} format specifiers", unused.len()) + }; - if show_example && unused.len() > 1 { - diag.note("format specifiers use curly braces: `{}`"); + let sugg = format!("\"{}{}\"", original_fmt_str, "{}".repeat(unused.len())); + let msg = format!("format specifiers use curly braces, consider adding {msg}"); - let mut suggest_fixed_fmt = format!("\"{}", original_fmt_str); - for _ in &unused { - suggest_fixed_fmt.push_str("{}"); - } - suggest_fixed_fmt.push('"'); - - diag.span_suggestion_verbose( - fmt_span, - format!("consider adding {} format specifiers", unused.len()), - suggest_fixed_fmt, - Applicability::MaybeIncorrect, - ); + diag.span_suggestion_verbose(fmt_span, msg, sugg, Applicability::MaybeIncorrect); } } diff --git a/tests/ui/fmt/ifmt-bad-arg.stderr b/tests/ui/fmt/ifmt-bad-arg.stderr index 6ddc8172901..b565b836f21 100644 --- a/tests/ui/fmt/ifmt-bad-arg.stderr +++ b/tests/ui/fmt/ifmt-bad-arg.stderr @@ -63,8 +63,7 @@ LL | format!("", 1, 2); | | argument never used | multiple missing formatting specifiers | - = note: format specifiers use curly braces: `{}` -help: consider adding 2 format specifiers +help: format specifiers use curly braces, consider adding 2 format specifiers | LL | format!("{}{}", 1, 2); | ++++ @@ -109,8 +108,7 @@ LL | format!("", foo=2); | | | formatting specifier missing | - = note: format specifiers use curly braces: `{}` -help: consider adding format specifier +help: format specifiers use curly braces, consider adding a format specifier | LL | format!("{}", foo=2); | ++ diff --git a/tests/ui/macros/format-unused-lables.stderr b/tests/ui/macros/format-unused-lables.stderr index 1c5cdcc2346..90eed8dd86b 100644 --- a/tests/ui/macros/format-unused-lables.stderr +++ b/tests/ui/macros/format-unused-lables.stderr @@ -8,8 +8,7 @@ LL | println!("Test", 123, 456, 789); | | argument never used | multiple missing formatting specifiers | - = note: format specifiers use curly braces: `{}` -help: consider adding 3 format specifiers +help: format specifiers use curly braces, consider adding 3 format specifiers | LL | println!("Test{}{}{}", 123, 456, 789); | ++++++ @@ -26,8 +25,7 @@ LL | 456, LL | 789 | ^^^ argument never used | - = note: format specifiers use curly braces: `{}` -help: consider adding 3 format specifiers +help: format specifiers use curly braces, consider adding 3 format specifiers | LL | println!("Test2{}{}{}", | ++++++ @@ -40,8 +38,7 @@ LL | println!("Some stuff", UNUSED="args"); | | | formatting specifier missing | - = note: format specifiers use curly braces: `{}` -help: consider adding format specifier +help: format specifiers use curly braces, consider adding a format specifier | LL | println!("Some stuff{}", UNUSED="args"); | ++ diff --git a/tests/ui/mir/unsized-extern-static.stderr b/tests/ui/mir/unsized-extern-static.stderr index 005dc59d78f..c0810e650ef 100644 --- a/tests/ui/mir/unsized-extern-static.stderr +++ b/tests/ui/mir/unsized-extern-static.stderr @@ -6,8 +6,7 @@ LL | println!("C", unsafe { &symbol }); | | | formatting specifier missing | - = note: format specifiers use curly braces: `{}` -help: consider adding format specifier +help: format specifiers use curly braces, consider adding a format specifier | LL | println!("C{}", unsafe { &symbol }); | ++ diff --git a/tests/ui/suggestions/missing-format-specifiers-issue-68293.rs b/tests/ui/suggestions/missing-format-specifiers-issue-68293.rs index 2f5e9629441..29799624d78 100644 --- a/tests/ui/suggestions/missing-format-specifiers-issue-68293.rs +++ b/tests/ui/suggestions/missing-format-specifiers-issue-68293.rs @@ -2,18 +2,18 @@ fn no_format_specifier_two_unused_args() { println!("Hello", "World"); //~^ ERROR argument never used //~| NOTE formatting specifier missing - //~| NOTE format specifiers use curly braces: `{}` //~| NOTE argument never used + //~| HELP format specifiers use curly braces, consider adding a format specifier } fn no_format_specifier_multiple_unused_args() { println!("list: ", 1, 2, 3); //~^ ERROR multiple unused formatting arguments //~| NOTE multiple missing formatting specifiers - //~| NOTE format specifiers use curly braces: `{}` //~| NOTE argument never used //~| NOTE argument never used //~| NOTE argument never used + //~| HELP format specifiers use curly braces, consider adding 3 format specifiers } fn missing_format_specifiers_one_unused_arg() { diff --git a/tests/ui/suggestions/missing-format-specifiers-issue-68293.stderr b/tests/ui/suggestions/missing-format-specifiers-issue-68293.stderr index 961887a7e3f..081409789f5 100644 --- a/tests/ui/suggestions/missing-format-specifiers-issue-68293.stderr +++ b/tests/ui/suggestions/missing-format-specifiers-issue-68293.stderr @@ -6,8 +6,7 @@ LL | println!("Hello", "World"); | | | formatting specifier missing | - = note: format specifiers use curly braces: `{}` -help: consider adding format specifier +help: format specifiers use curly braces, consider adding a format specifier | LL | println!("Hello{}", "World"); | ++ @@ -22,8 +21,7 @@ LL | println!("list: ", 1, 2, 3); | | argument never used | multiple missing formatting specifiers | - = note: format specifiers use curly braces: `{}` -help: consider adding 3 format specifiers +help: format specifiers use curly braces, consider adding 3 format specifiers | LL | println!("list: {}{}{}", 1, 2, 3); | ++++++ |
