Only give autofix suggestion when no named args are present

This commit is contained in:
francorbacho 2023-10-05 15:46:34 +02:00
parent 38b0182832
commit c8ee7db6ea
6 changed files with 44 additions and 6 deletions

View File

@ -657,7 +657,7 @@ pub(crate) struct FormatRedundantArgs {
pub(crate) note: MultiSpan,
#[subdiagnostic]
pub(crate) sugg: FormatRedundantArgsSugg,
pub(crate) sugg: Option<FormatRedundantArgsSugg>,
}
#[derive(Subdiagnostic)]

View File

@ -767,11 +767,17 @@ fn report_redundant_format_arguments<'a>(
suggestion_spans.push(span);
}
let sugg = if args.named_args().len() == 0 {
Some(errors::FormatRedundantArgsSugg { spans: suggestion_spans })
} else {
None
};
return Some(ecx.create_err(errors::FormatRedundantArgs {
n: args_spans.len(),
span: MultiSpan::from(args_spans),
note: multispan,
sugg: errors::FormatRedundantArgsSugg { spans: suggestion_spans },
sugg,
}));
}

View File

@ -0,0 +1,10 @@
fn main() {
let x = "x";
let y = "y";
println!("{x}", x, x = y);
//~^ ERROR: redundant argument
println!("{x}", x = y, x = y);
//~^ ERROR: duplicate argument named `x`
}

View File

@ -0,0 +1,22 @@
error: redundant argument
--> $DIR/issue-105225-named-args.rs:5:21
|
LL | println!("{x}", x, x = y);
| ^
|
note: the formatting specifier is referencing the binding already
--> $DIR/issue-105225-named-args.rs:5:16
|
LL | println!("{x}", x, x = y);
| ^
error: duplicate argument named `x`
--> $DIR/issue-105225-named-args.rs:8:28
|
LL | println!("{x}", x = y, x = y);
| - ^ duplicate argument
| |
| previously here
error: aborting due to 2 previous errors

View File

@ -1,8 +1,8 @@
// run-rustfix
fn main() {
let x = 0;
let y = 0;
let x = "x";
let y = "y";
println!("{x}", );
//~^ ERROR: redundant argument

View File

@ -1,8 +1,8 @@
// run-rustfix
fn main() {
let x = 0;
let y = 0;
let x = "x";
let y = "y";
println!("{x}", x);
//~^ ERROR: redundant argument