about summary refs log tree commit diff
diff options
context:
space:
mode:
authorIoaNNUwU <ioannxd@gmail.com>2025-09-08 19:15:35 +0200
committerIoaNNUwU <ioannxd@gmail.com>2025-09-08 19:19:59 +0200
commit43a6f56ca78295164dbf964695a43be7e35b1994 (patch)
tree17dea96b5f4fd951d370e58c826caa3033eee443
parent1e733b389192b48110779bc1cd8edcaed7c43b0e (diff)
downloadrust-43a6f56ca78295164dbf964695a43be7e35b1994.tar.gz
rust-43a6f56ca78295164dbf964695a43be7e35b1994.zip
Apply requested changes
-rw-r--r--compiler/rustc_builtin_macros/src/format.rs44
-rw-r--r--tests/ui/fmt/ifmt-bad-arg.stderr6
-rw-r--r--tests/ui/macros/format-unused-lables.stderr9
-rw-r--r--tests/ui/mir/unsized-extern-static.stderr3
-rw-r--r--tests/ui/suggestions/missing-format-specifiers-issue-68293.rs4
-rw-r--r--tests/ui/suggestions/missing-format-specifiers-issue-68293.stderr6
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);
    |                     ++++++