Do not suggest ref
multiple times for the same binding
This commit is contained in:
parent
9e72e35ceb
commit
4a51f37bcb
2 changed files with 3 additions and 9 deletions
|
@ -171,6 +171,7 @@ impl<'cx, 'tcx> MirBorrowckCtxt<'cx, 'tcx> {
|
||||||
|
|
||||||
let mut is_loop_move = false;
|
let mut is_loop_move = false;
|
||||||
let mut in_pattern = false;
|
let mut in_pattern = false;
|
||||||
|
let mut seen_spans = FxHashSet::default();
|
||||||
|
|
||||||
for move_site in &move_site_vec {
|
for move_site in &move_site_vec {
|
||||||
let move_out = self.move_data.moves[(*move_site).moi];
|
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);
|
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;
|
in_pattern = true;
|
||||||
err.span_suggestion_verbose(
|
err.span_suggestion_verbose(
|
||||||
pat.span.shrink_to_lo(),
|
pat.span.shrink_to_lo(),
|
||||||
|
@ -328,6 +329,7 @@ impl<'cx, 'tcx> MirBorrowckCtxt<'cx, 'tcx> {
|
||||||
"ref ".to_string(),
|
"ref ".to_string(),
|
||||||
Applicability::MachineApplicable,
|
Applicability::MachineApplicable,
|
||||||
);
|
);
|
||||||
|
seen_spans.insert(pat.span);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -88,10 +88,6 @@ help: borrow this binding in the pattern to avoid moving the value
|
||||||
|
|
|
|
||||||
LL | ref foo @ Some(Test::Foo | Test::Bar) => (),
|
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
|
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
|
--> $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)] => (),
|
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
|
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
|
--> $DIR/bindings-after-at-or-patterns-slice-patterns-box-patterns.rs:144:5
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue