diff --git a/compiler/rustc_borrowck/src/diagnostics/conflict_errors.rs b/compiler/rustc_borrowck/src/diagnostics/conflict_errors.rs
index 9b6836039a1..8a4b0ebe737 100644
--- a/compiler/rustc_borrowck/src/diagnostics/conflict_errors.rs
+++ b/compiler/rustc_borrowck/src/diagnostics/conflict_errors.rs
@@ -171,6 +171,7 @@ impl<'cx, 'tcx> MirBorrowckCtxt<'cx, 'tcx> {
 
             let mut is_loop_move = false;
             let mut in_pattern = false;
+            let mut seen_spans = FxHashSet::default();
 
             for move_site in &move_site_vec {
                 let move_out = self.move_data.moves[(*move_site).moi];
@@ -320,7 +321,7 @@ impl<'cx, 'tcx> MirBorrowckCtxt<'cx, 'tcx> {
                             self.suggest_cloning(&mut err, ty, move_span);
                         }
                     }
-                    if let Some(pat) = finder.pat {
+                    if let Some(pat) = finder.pat && !seen_spans.contains(&pat.span) {
                         in_pattern = true;
                         err.span_suggestion_verbose(
                             pat.span.shrink_to_lo(),
@@ -328,6 +329,7 @@ impl<'cx, 'tcx> MirBorrowckCtxt<'cx, 'tcx> {
                             "ref ".to_string(),
                             Applicability::MachineApplicable,
                         );
+                        seen_spans.insert(pat.span);
                     }
                 }
 
diff --git a/src/test/ui/borrowck/bindings-after-at-or-patterns-slice-patterns-box-patterns.stderr b/src/test/ui/borrowck/bindings-after-at-or-patterns-slice-patterns-box-patterns.stderr
index f58672f0666..d06b3bc1c3e 100644
--- a/src/test/ui/borrowck/bindings-after-at-or-patterns-slice-patterns-box-patterns.stderr
+++ b/src/test/ui/borrowck/bindings-after-at-or-patterns-slice-patterns-box-patterns.stderr
@@ -88,10 +88,6 @@ help: borrow this binding in the pattern to avoid moving the value
    |
 LL |         ref foo @ Some(Test::Foo | Test::Bar) => (),
    |         +++
-help: borrow this binding in the pattern to avoid moving the value
-   |
-LL |         ref foo @ Some(Test::Foo | Test::Bar) => (),
-   |         +++
 
 error[E0502]: cannot borrow `x` as mutable because it is also borrowed as immutable
   --> $DIR/bindings-after-at-or-patterns-slice-patterns-box-patterns.rs:86:5
@@ -148,10 +144,6 @@ help: borrow this binding in the pattern to avoid moving the value
    |
 LL |         ref a @ [.., Some(Test::Foo | Test::Bar)] => (),
    |         +++
-help: borrow this binding in the pattern to avoid moving the value
-   |
-LL |         ref a @ [.., Some(Test::Foo | Test::Bar)] => (),
-   |         +++
 
 error[E0502]: cannot borrow `x` as mutable because it is also borrowed as immutable
   --> $DIR/bindings-after-at-or-patterns-slice-patterns-box-patterns.rs:144:5