about summary refs log tree commit diff
diff options
context:
space:
mode:
authorLukas Markeffsky <@>2023-01-19 21:45:38 +0100
committerLukas Markeffsky <@>2023-01-20 20:16:37 +0100
commit228ddf04fca01e8224ad4fb8a8e9db8483642249 (patch)
tree0c103dc0343d7f3bdd74304173c855d9b54f0e97
parente415e2f1a289f97d3b8ac4f4d2b7eb2b050b86cc (diff)
downloadrust-228ddf04fca01e8224ad4fb8a8e9db8483642249.tar.gz
rust-228ddf04fca01e8224ad4fb8a8e9db8483642249.zip
fix overlapping spans for `clippy::uninlined_format_args`
-rw-r--r--src/tools/clippy/clippy_lints/src/format_args.rs4
1 files changed, 4 insertions, 0 deletions
diff --git a/src/tools/clippy/clippy_lints/src/format_args.rs b/src/tools/clippy/clippy_lints/src/format_args.rs
index 043112bbc95..bb7fa3087b7 100644
--- a/src/tools/clippy/clippy_lints/src/format_args.rs
+++ b/src/tools/clippy/clippy_lints/src/format_args.rs
@@ -311,6 +311,10 @@ fn check_uninlined_args(
     // in those cases, make the code suggestion hidden
     let multiline_fix = fixes.iter().any(|(span, _)| cx.sess().source_map().is_multiline(*span));
 
+    // Suggest removing each argument only once, for example in `format!("{0} {0}", arg)`.
+    fixes.sort_unstable_by_key(|(span, _)| *span);
+    fixes.dedup_by_key(|(span, _)| *span);
+
     span_lint_and_then(
         cx,
         UNINLINED_FORMAT_ARGS,