about summary refs log tree commit diff
diff options
context:
space:
mode:
authorbors <bors@rust-lang.org>2022-07-29 04:23:08 +0000
committerbors <bors@rust-lang.org>2022-07-29 04:23:08 +0000
commit61c6d16adef2a55a2cefbeb8c3ac19f0af67a479 (patch)
tree3abcf03b60249b78e8bece7a368620fbe93b3fee
parent67c405cc1d6cc898cf26586dfe68390cc05a8e40 (diff)
parentaf8ae10678612959a5d6036e0b99aca688b3e545 (diff)
Auto merge of #99660 - PrestonFrom:issue_99265, r=compiler-errors
Generate correct suggestion with named arguments used positionally

Address issue #99265 by checking each positionally used argument
to see if the argument is named and adding a lint to use the name
instead. This way, when named arguments are used positionally in a
different order than their argument order, the suggested lint is
correct.

For example:
```
println!("{b} {}", a=1, b=2);
```
This will now generate the suggestion:
```
println!("{b} {a}", a=1, b=2);
```

Additionally, this check now also correctly replaces or inserts
only where the positional argument is (or would be if implicit).
Also, width and precision are replaced with their argument names
when they exists.

Since the issues were so closely related, this fix for issue #99265
also fixes issue #99266.

Fixes #99265
Fixes #99266
-rw-r--r--clippy_lints/src/write.rs2
1 files changed, 1 insertions, 1 deletions
diff --git a/clippy_lints/src/write.rs b/clippy_lints/src/write.rs
index 08b88947520..3a99d1b417f 100644
--- a/clippy_lints/src/write.rs
+++ b/clippy_lints/src/write.rs
@@ -441,7 +441,7 @@ impl SimpleFormatArgs {
         };
 
         match arg.position {
-            ArgumentIs(n) | ArgumentImplicitlyIs(n) => {
+            ArgumentIs(n, _) | ArgumentImplicitlyIs(n) => {
                 if self.unnamed.len() <= n {
                     // Use a dummy span to mark all unseen arguments.
                     self.unnamed.resize_with(n, || vec![DUMMY_SP]);