Rollup merge of #146456 - IoaNNUwU:issue-146446, r=estebank
Fix panic and incorrectly suggested examples in `format_args` macro. Follow up on rust-lang/rust#146123 Fixes: rust-lang/rust#146446 r? `@estebank`
This commit is contained in:
commit
c4539b2d58
3 changed files with 87 additions and 5 deletions
|
|
@ -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);
|
||||
|
|
|
|||
|
|
@ -32,4 +32,33 @@ fn missing_format_specifiers_multiple_unused_args() {
|
|||
//~| NOTE consider adding 2 format specifiers
|
||||
}
|
||||
|
||||
fn unicode_unused_args() {
|
||||
panic!("👆", "👆", 1);
|
||||
//~^ ERROR multiple unused formatting arguments
|
||||
//~| NOTE multiple missing formatting specifiers
|
||||
//~| NOTE argument never used
|
||||
//~| NOTE argument never used
|
||||
//~| HELP format specifiers use curly braces, consider adding 2 format specifiers
|
||||
}
|
||||
|
||||
fn raw_str_unused_arg() {
|
||||
format_args!(r##"lJÆ<F0908FBF>.<>"##, r#"r}JÆ" {}"#, 1);
|
||||
//~^ ERROR multiple unused formatting arguments
|
||||
//~| NOTE multiple missing formatting specifiers
|
||||
//~| NOTE argument never used
|
||||
//~| NOTE argument never used
|
||||
//~| HELP format specifiers use curly braces, consider adding 2 format specifiers
|
||||
}
|
||||
|
||||
fn valid_new_lines_unused_args() {
|
||||
panic!("Expect 2 newlines
|
||||
|
||||
", "👆", 1);
|
||||
//~^ ERROR multiple unused formatting arguments
|
||||
//~| NOTE argument never used
|
||||
//~| NOTE argument never used
|
||||
//~^^^^^^ NOTE multiple missing formatting specifiers
|
||||
//~| HELP format specifiers use curly braces, consider adding 2 format specifiers
|
||||
}
|
||||
|
||||
fn main() { }
|
||||
|
|
|
|||
|
|
@ -45,5 +45,52 @@ LL | println!("list: {}", 1, 2, 3);
|
|||
|
|
||||
= note: consider adding 2 format specifiers
|
||||
|
||||
error: aborting due to 4 previous errors
|
||||
error: multiple unused formatting arguments
|
||||
--> $DIR/missing-format-specifiers-issue-68293.rs:36:17
|
||||
|
|
||||
LL | panic!("👆", "👆", 1);
|
||||
| ---- ^^^^ ^ argument never used
|
||||
| | |
|
||||
| | argument never used
|
||||
| multiple missing formatting specifiers
|
||||
|
|
||||
help: format specifiers use curly braces, consider adding 2 format specifiers
|
||||
|
|
||||
LL | panic!("👆{}{}", "👆", 1);
|
||||
| ++++
|
||||
|
||||
error: multiple unused formatting arguments
|
||||
--> $DIR/missing-format-specifiers-issue-68293.rs:45:35
|
||||
|
|
||||
LL | format_args!(r##"lJÆ<F0908FBF>.<>"##, r#"r}JÆ" {}"#, 1);
|
||||
| --------------- ^^^^^^^^^^^^^^ ^ argument never used
|
||||
| | |
|
||||
| | argument never used
|
||||
| multiple missing formatting specifiers
|
||||
|
|
||||
help: format specifiers use curly braces, consider adding 2 format specifiers
|
||||
|
|
||||
LL | format_args!(r##"lJÆ<F0908FBF>.<>{}{}"##, r#"r}JÆ" {}"#, 1);
|
||||
| ++++
|
||||
|
||||
error: multiple unused formatting arguments
|
||||
--> $DIR/missing-format-specifiers-issue-68293.rs:56:4
|
||||
|
|
||||
LL | panic!("Expect 2 newlines
|
||||
| ____________-
|
||||
LL | |
|
||||
LL | | ", "👆", 1);
|
||||
| | - ^^^^ ^ argument never used
|
||||
| | | |
|
||||
| |_| argument never used
|
||||
| multiple missing formatting specifiers
|
||||
|
|
||||
help: format specifiers use curly braces, consider adding 2 format specifiers
|
||||
|
|
||||
LL | panic!("Expect 2 newlines
|
||||
LL |
|
||||
LL ~ {}{}", "👆", 1);
|
||||
|
|
||||
|
||||
error: aborting due to 7 previous errors
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue