From 10c868686df84794dc449972d173a29d53b1b116 Mon Sep 17 00:00:00 2001
From: Lukas Markeffsky <@>
Date: Thu, 19 Jan 2023 21:45:38 +0100
Subject: [PATCH] fix overlapping spans for `clippy::uninlined_format_args`

---
 clippy_lints/src/format_args.rs | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/clippy_lints/src/format_args.rs b/clippy_lints/src/format_args.rs
index 043112bbc95..bb7fa3087b7 100644
--- a/clippy_lints/src/format_args.rs
+++ b/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,